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

cot*_*aws 18 transparency android bitmap

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

谢谢

小智 50

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

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);
Run Code Online (Sandbox Code Playgroud)

然后保存newBitmap

  • 当我保存画布图像...背景颜色我变黑了.任何其他方式改变..在此先感谢.. (3认同)

Muh*_*aat 6

要保存图像并保留其透明区域,您不能将其保存为 JPG,您必须将其保存为 PNG,不仅如此,还要保存图像之前将 的设置设置setHasAlpha()为 true ,所以它会是这样的:

保存前:

mBitmap.setHasAlpha(true);
Run Code Online (Sandbox Code Playgroud)

保存时,使用您用于保存的任何方法将图像保存为 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();
Run Code Online (Sandbox Code Playgroud)