背景
我们刚刚切换到 UIL 库,这看起来很棒。不幸的是,我们必须支持 CMYK 图像(违背我们的意愿)并试图修改现有的ImageDecoder
名为BaseImageDecoder
.
可以在此处找到此代码。http://pastebin.com/NqbSr0w3
我们有一个现有的 AsyncTask http://pastebin.com/5aq6QrRd,它使用了这篇 SO 帖子中描述的 ImageMagick 包装器(将图像字节 [] 从 CMYK 转换为 RGB?)。这在我们的设置中运行良好。
问题
当前解码器无法从文件系统加载缓存的图像,这会导致解码错误。我们查看了源代码并相信我们使用了正确的功能。我们还认为在此过程中添加额外的解码级别是理想的,因为图像可能已调整大小并存储在文件系统中。
File cachedImageFile = ImageLoader.getInstance().getDiscCache().get(decodingInfo.getImageUri());
if (!cachedImageFile.exists()) {
Log.v("App", "FILE DOES NOT EXIST");
return null;
}
上面的行总是返回文件不存在。
问题
我们现在处理 CMYK 图像是否不正确,如果不是,为什么我们不能从文件系统的缓存中获取图像?