【问题标题】:Get Android Universal Image Loader cache/save images with file extension获取带有文件扩展名的 Android Universal Image Loader 缓存/保存图像
【发布时间】:2014-05-13 09:22:02
【问题描述】:

我正在使用来自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);
    }

希望任何人都可以帮助我!

【问题讨论】:

    标签: android image caching asynchronous universal-image-loader


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

      创建自己的FileNameGenerator,它会在最后生成带有扩展名的文件名,然后将其设置到磁盘缓存中:

          ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                   ...
                  .discCache(new UnlimitedDiscCache(cacheDir, myGenerator))
                  ...
                  .build();
      

      【讨论】:

        猜你喜欢
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        • 2012-11-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 2012-12-24
        相关资源
        最近更新 更多