如何更改已保存透明位图的背景颜色

时间:2010-12-31 22:30:29

标签: android bitmap transparency

我将png图像打开到Bitmap中,对其进行一些修改,然后将其作为jpg保存到磁盘。在png具有一些透明区域的情况下,它们被保存为黑色。有没有办法更改此默认行为,以便使用不同的颜色背景(如白色)保存图像?

由于

2 个答案:

答案 0 :(得分:45)

您可以将其绘制到新的位图,例如

Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), image.getConfig());
Canvas canvas = new Canvas(newBitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(image, 0, 0, null);

然后保存newBitmap

答案 1 :(得分:0)

要保存图像并保留其透明区域,您无法将其保存为JPG,您必须将其保存为PNG,不仅如此,还要将setHasAlpha()的设置设置为true BEFORE 保存图片,所以就像那样:

保存前

mBitmap.setHasAlpha(true);

保存时,使用您用于保存的任何方法将图像保存为PNG,例如:

File file = new File(folderDir, name);
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}
FileOutputStream out = new FileOutputStream(file);
mBitmap.setHasAlpha(true);
mBitmap.compress(Bitmap.CompressFormat.PNG, 80, out);
out.flush();
out.close();