Tôi đang lưu trữ ảnh bitmap trong thẻ SD trong khi truy xuất chất lượng còn thiếu của chúng. Làm thế nào tôi có thể giải quyết vấn đề này. Dưới đây là mã của tôi để lưu trữ bitmap trong thẻ Sd.
public void saveExternalPrivateStorage(File folderDir, String fname,
Bản đồ bit bit) {
Tệp tệp = Tệp mới (thư mụcDir, fname);
if (file.exists()) {
file.delete();
}
if ((folderDir.mkdirs() || folderDir.isDirectory())) {
thử {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 0, out);
out.flush();
out.close();
System.out.println("Đã lưu trữ");
System.out.println(file.getAbsolutePath());
System.out.println("Đã lưu trữ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Gọi phương thức này:
File folderDir= new File(getActivity().getExternalFilesDir("myfolder"),"/images");
storeImagesIndevices.saveExternalPrivateStorage(folderDir,filename,imgBitmapUrls.get(i));
Lấy từ thẻ SD:
Bitmap bitmap2 = BitmapFactory.decodeFile(folderDir+"/"+data.getTid());
dbimgBitmapUrls.put(data.get_tid()-1, bitmap2);
Cảm ơn bạn rất nhiều...
bitmap.compress(Bitmap.CompressFormat.JPEG, 0, out);
JPEG là định dạng nén bị mất dữ liệu và bạn đã đặt tham số chất lượng thành 0%. Khoảng 70% thường là mức vừa phải giữa kích thước tệp và chất lượng hình ảnh:
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
Hoặc sử dụng định dạng lossless trong đó các tham số chất lượng không quan trọng, như PNG:
bitmap.compress(Bitmap.CompressFormat.PNG, 0, out);
Có thể lưu trữ bitmap trong SQLite không? Trong trường hợp của tôi, số lượng hình ảnh không nhiều.
Bạn có thể, nhưng bạn không nên. Cách tiếp cận tốt hơn là lưu trữ hình ảnh dưới dạng tệp và lưu đường dẫn trong cơ sở dữ liệu.
Tôi là một lập trình viên xuất sắc, rất giỏi!