Android 使用通用图像加载器保存和更新图像

Android 使用通用图像加载器保存和更新图像,android,caching,picasso,Android,Caching,Picasso,已更新 如前所述,我使用了通用图像加载器。但是我得到了一些错误。 **这是我第一次玩这种东西 以下是我的代码: 以下是使用异步将位图保存到内部存储器的代码: Uri uri = Crop.getOutput(result); try { bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri); } catch (IOException e) {

已更新

如前所述,我使用了通用图像加载器。但是我得到了一些错误。 **这是我第一次玩这种东西

以下是我的代码:

以下是使用异步将位图保存到内部存储器的代码:

Uri uri = Crop.getOutput(result);

        try {
            bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            new saveDpToDisk().execute(bmp);
        }
class saveDpToDisk extends AsyncTask{

    @Override
    protected Object doInBackground(Object[] params) {
        try {
            fos = openFileOutput("ProPic", Context.MODE_PRIVATE);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        bmp.compress(Bitmap.CompressFormat.JPEG, 60, fos);
        return bmp;
    }
}
下面是使用UIL从存储器加载图像的代码:

@Override
    protected Object doInBackground(Object[] params) {

        FileInputStream fis;
        try {
            fis = openFileInput("ProPic");
            String uri = String.valueOf(fis);
            DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisk(true).build();
            ImageLoader loader = ImageLoader.getInstance();
            loader.displayImage(uri, pro_pic, options);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return pro_pic;
    }
}
这就是我得到的错误(应用程序不强制关闭,错误只是出现在logcat中)

UIL doesn't support scheme(protocol) by default [java.io.FileInputStream@42987180]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))
java.lang.UnsupportedOperationException: UIL doesn't support scheme(protocol) by default [java.io.FileInputStream@42987180]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))
        at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromOtherSource(BaseImageDownloader.java:235)
        at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:97)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:290)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:273)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:229)
        at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:135)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
________xx_______________________

原始问题

我的应用程序只需加载一个图像(用户可以从gallery中选择该图像,将其设置为该应用程序的dp)

因此,我所做的是使用FileOutputStream将所选pic保存到存储器中,然后在activity的onResume方法中使用FileInputStream加载pic

但是,当所选图片太大时,应用程序启动太慢(需要时间膨胀视图),logcat显示内存堆为30-60MB

因此,我想将图像存储在缓存中并加载,但并没有找到一种方法

我应该使用毕加索吗?如果是,如何使用它从缓存中保存和删除

或者还有其他方法可以满足我的需求吗?

如果你读了Koush在G+上的帖子,你会得到清晰的解决方案,我总结了一下,Android Universal Image Loader是满足你需求的赢家

  • 如果您正在使用网络,则具有最好的图像API

  • +是最快的。玩这些 另外两个伟大的库确实强调了图像API 然而,它已经相当过时了

  • 非常灵活;我非常喜欢他们的可插拔后端传输,
    并且可能会在那里丢弃AndroidSync。请求优先级
    取消管理非常好(如果您使用网络)

  • 是最受欢迎的一款
    目前,高度可定制

本项目旨在提供一个可重用的异步测试工具 图像加载、缓存和显示。它最初基于Fedor 弗拉索夫的项目,并已大大重构和改进以来 那么

考虑到所有这些安卓通用图像加载器都符合您的要求(加载图像在本地磁盘上)!

如果您阅读Koush在G+上的帖子,您将获得清晰的解决方案,我总结一下,安卓通用图像加载器是满足您要求的赢家

  • 如果您正在使用网络,则具有最好的图像API

  • +是最快的。玩这些 另外两个伟大的库确实强调了图像API 然而,它已经相当过时了

  • 非常灵活;我非常喜欢他们的可插拔后端传输,
    并且可能会在那里丢弃AndroidSync。请求优先级
    取消管理非常好(如果您使用网络)

  • 是最受欢迎的一款
    目前,高度可定制

本项目旨在提供一个可重用的异步测试工具 图像加载、缓存和显示。它最初基于Fedor 弗拉索夫的项目,并已大大重构和改进以来 那么

考虑到所有这些安卓通用图像加载器都符合您的要求(加载图像在本地磁盘上)!

如果您阅读Koush在G+上的帖子,您将获得清晰的解决方案,我总结一下,安卓通用图像加载器是满足您要求的赢家

  • 如果您正在使用网络,则具有最好的图像API

  • +是最快的。玩这些 另外两个伟大的库确实强调了图像API 然而,它已经相当过时了

  • 非常灵活;我非常喜欢他们的可插拔后端传输,
    并且可能会在那里丢弃AndroidSync。请求优先级
    取消管理非常好(如果您使用网络)

  • 是最受欢迎的一款
    目前,高度可定制

本项目旨在提供一个可重用的异步测试工具 图像加载、缓存和显示。它最初基于Fedor 弗拉索夫的项目,并已大大重构和改进以来 那么

考虑到所有这些安卓通用图像加载器都符合您的要求(加载图像在本地磁盘上)!

如果您阅读Koush在G+上的帖子,您将获得清晰的解决方案,我总结一下,安卓通用图像加载器是满足您要求的赢家

  • 如果您正在使用网络,则具有最好的图像API

  • +是最快的。玩这些 另外两个伟大的库确实强调了图像API 然而,它已经相当过时了

  • 非常灵活;我非常喜欢他们的可插拔后端传输,
    并且可能会在那里丢弃AndroidSync。请求优先级
    取消管理非常好(如果您使用网络)

  • 是最受欢迎的一款
    目前,高度可定制

本项目旨在提供一个可重用的异步测试工具 图像加载、缓存和显示。它最初基于Fedor 弗拉索夫的项目,并已大大重构和改进以来 那么


考虑到所有这些安卓通用图像加载器都符合您的要求(在本地磁盘上加载图像)!

毕加索和其他库正在使用load im