我为Android应用程序构建了某种缓存系统。它将生成的图像存储到内部存储中,然后在重新打开应用程序时重新加载它们(以避免大的延迟)。现在,当从内部存储器加载图像时,部分图像的颜色会发生变化,而每次都会重新生成。
白色背景圈变为黑色,但它仍然是透明的(红色背景仍然闪耀)。这是我用于将图像保存到内部存储的代码:
// The format that's used to persistently store all logos in the application.
public static final String IMAGE_FORMAT = "png";
public static final Bitmap.CompressFormat IMAGE_COMPRESS_FORMAT = Bitmap.CompressFormat.PNG;
// Image quality settings used for storing the logos in the persistent storage.
public static final int IMAGE_QUALITY = 0;
String fileName = "cache/test.png";
FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE)
output.setHasAlpha(true);
output.compress(Constants.IMAGE_COMPRESS_FORMAT, Constants.IMAGE_QUALITY, fos);
这是我用来重新加载图片的代码:
FileInputStream in = context.openFileInput(fileName)
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
output = BitmapFactory.decodeStream(in, null, opts);
我已经尝试更改 inPreferredConfig ,但没有效果。将Bitmap作为Drawable应用于ImageView的代码在两种情况下都是完全相同的(相同的方法),这应该不是问题。
我还尝试在压缩Bitmap之前使用 setHasAlpha(true) - 方法,但这也不会改变任何内容。
关于如何解决这种奇怪行为的任何想法?