首页 文章

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

提问于
浏览
17

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

谢谢

2 回答

  • 1

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

    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

  • 43

    要保存图像并保留其透明区域,你无法保存它和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();
    

相关问题