直接获取Bitmap而不是discCacheUtil中的文件

时间:2013-04-09 12:50:21

标签: universal-image-loader

使用Universal Image Loader下载图像。这是我的配置和显示选项。

File cacheDir = getApplicationContext().getCacheDir();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
    getApplicationContext())
    .discCache(new UnlimitedDiscCache(cacheDir)).threadPoolSize(3)
    .denyCacheImageMultipleSizesInMemory()
    .tasksProcessingOrder(QueueProcessingType.LIFO)
    .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
    .build();

options = new DisplayImageOptions.Builder()
    .cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565)
    .imageScaleType(ImageScaleType.EXACTLY).resetViewBeforeLoading()
    .showStubImage(R.drawable.bt_fine_dining).build();

一切都很好。但我想检查图像是否已经存在。使用discCacheUtil能够获取图像文件。 [DiscCacheUtil.findInCache(imageUri,discCache)]。但有没有办法直接获取Bitmap而不是文件?

如果我同时指定cacheInMemory()和cacheOnDisc(),图像会保存两次吗?这里是否有额外的内存消耗,因为图像将被保存在内存和光盘中?请帮帮我。

提前致谢

2 个答案:

答案 0 :(得分:1)

imageLoader.displayImage(imageUri, imageView, displayOptions, new ImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
    // Here loadedImage is you Bitmap object.
}
});

答案 1 :(得分:1)

尝试使用loadImageSync(String uri)。它为您提供位图。

如果你想从位图中抽取

Drawable d = new BitmapDrawable(getResources(),imageLoader.loadImageSync(url);