使用滑行加载图像时遇到问题。我试图在从图库中选择图像后加载图像,当我尝试使用Android默认setImageBitmap(bitmap);
加载图像时它已经工作但我遇到了内存泄漏问题。
然后我尝试了Glide图像加载器以避免内存泄漏问题。但我无法使用文件路径加载图像。
Glide.with(_A)
.load(new File(uri.getPath()))
.asBitmap()
.override(w, w)
.centerCrop()
.placeholder(R.drawable.diploma)
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
我也试图加载Uri,但这也没有用。
然后我尝试从URL Glide加载的URL图像加载图像。这很有效。
Glide
.with(_A)
.load("https://yt3.ggpht.com/-v0soe-ievYE/AAAAAAAAAAI/AAAAAAAAAAA/OixOH_h84Po/s900-c-k-no-mo-rj-c0xffffff/photo.jpg")
.asBitmap()
.override(w, w)
.centerCrop()
.placeholder(R.drawable.diploma)
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
然后我尝试使用默认功能从Uri加载图像
imageView.setImageURI(uri);
此功能适用于图像加载。
Uri没有问题,那么为什么我无法加载图片?
任何人都可以帮我找到解决此问题的解决方案吗?
答案 0 :(得分:2)
如上所述,这里是将图像保存在特定路径的代码,以及如何检索它。另外,我使用Realm来保存图像的路径,你可以使用其他任何东西。以下是保存图片的代码:
private void saveToInternalStorage(Bitmap bitmapImage, final String fileName) {
ContextWrapper cw = new ContextWrapper(getContext());
directory = cw.getDir("myloImages", Context.MODE_PRIVATE);
if (!directory.exists()) {
directory.mkdir();
}
mypath = new File(directory, fileName + ".png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
Log.v("IMAGE PATH", mypath.getAbsolutePath());
} catch (Exception e) {
Log.e("SAVE_IMAGE", e.getMessage(), e);
}
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
PhotosRealm photosRealm = new PhotosRealm();
photosRealm.setImageLocation(directory.getAbsolutePath() + "/" + fileName + ".png");
realm.copyToRealm(photosRealm);
// I'm using realm to save location.
}
});
finish();
}
现在从该位置检索图像。它与您的代码相同:
private RealmResults<PhotosRealm> list;
Glide.with(context).load(list.get(0).getImageLocation()).asBitmap().into(imageView);