从存储加载时,图像的透明颜色会发生变化

时间:2017-07-04 11:46:40

标签: android image png

我为Android应用程序构建了某种缓存系统。它将生成的图像存储到内部存储中,然后在重新打开应用程序时重新加载它们(以避免大的延迟)。现在,当从内部存储器加载图像时,部分图像的颜色会发生变化,而每次都会重新生成。

保存到存储之前( 应该是什么样子): enter image description here

从内部存储重新加载图像后: enter image description here

白色背景圈变为黑色,但它仍然是透明的(红色背景仍然闪耀)。这是我用于将图像保存到内部存储的代码:

// 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) - 方法,但这也不会改变任何内容。

关于如何解决这种奇怪行为的任何想法?

0 个答案:

没有答案