我有一个字节数组。然后我像这样从它创建一个Bitmap对象并将其显示在ImageView中:
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
ByteBuffer buffer = ByteBuffer.wrap(bytes);
image.copyPixelsFromBuffer(buffer);
...
ImageView imgView = (ImageView) findViewById(R.id.image);
imgView.setImageBitmap(image);
然后我创建一个文件并将此字节数组存储为图像
FileOutputStream fOut = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
当我在Gallery中打开此文件时,它看起来与ImageView中的文件不同。我尝试将字节直接写入文件,而不是Bitmap,但后来我根本无法打开图像。
ImageView的:
画廊:
我以为Bitmap.CompressFormat.PNG,忍受不压缩。我在这里缺少什么?
编辑:
我不知道它是否重要,但原始字节数组来自加密来自原始图片的另一个字节数组。我从磁盘加载了一个图像,创建了一个字节数组,修改了它,然后用它来尝试上面的内容。
答案 0 :(得分:1)
这可能是因为您在应用和图库中使用不同的背景颜色查看图像。由于您使用Bitmap.Config.ARGB_8888并有效地为其提供随机数据,因此在生成的图像中某些像素将是透明的,并且当您查看图像时,背景的颜色将“透过”。如果您将应用的背景颜色设置为黑色,则图像可能与图库中的颜色相同。