我正在使用https://github.com/nostra13/Android-Universal-Image-Loader中的Android-Universal-Image-Loader来加载和缓存图像异步。我面临的问题是我想用图库打开图像或将它们发送给朋友。出于某种原因,我的图像被缓存而没有文件扩展名。
我正在使用当前配置
public static void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(context, CommonUtilities.APP_DIR);
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.considerExifParams(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.MAX_PRIORITY)
.discCacheExtraOptions(480, 800, CompressFormat.PNG, 75, null)
.denyCacheImageMultipleSizesInMemory()
.discCache(new UnlimitedDiscCache(cacheDir))
.defaultDisplayImageOptions(options)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);
}
希望任何人都可以帮助我!
答案 0 :(得分:3)
创建自己的FileNameGenerator
,它将生成最后带扩展名的文件名,然后将其设置为光盘缓存:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.discCache(new UnlimitedDiscCache(cacheDir, myGenerator))
...
.build();
答案 1 :(得分:1)
创建自定义文件名生成器
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import static java.lang.String.valueOf;
public class HashCodeFileNameWithDummyExtGenerator implements FileNameGenerator {
@Override
public String generate(String imageUri) {
return valueOf(imageUri.hashCode()) + ".png";
}
}
使用它
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.diskCache(new UnlimitedDiskCache(cacheDir, null, new HashCodeFileNameWithDummyExtGenerator()))
...
.build()