滑动不从文件路径加载图像

时间:2017-04-09 18:23:36

标签: android image imageview android-glide

使用滑行加载图像时遇到问题。我试图在从图库中选择图像后加载图像,当我尝试使用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没有问题,那么为什么我无法加载图片?

任何人都可以帮我找到解决此问题的解决方案吗?

1 个答案:

答案 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);