Python PIL完全删除每个Alpha通道

时间:2019-06-29 07:08:34

标签: python bitmap png python-imaging-library rgba

我竭尽全力将PNG顺利转换为位图,但每次都失败。

但是现在我想我可能找到了一个原因。 这是因为有Alpha通道。 (在Photoshop中为“羽毛”)

输入图像:

enter image description here

我期望的输出:

enter image description here

当前输出:

enter image description here

我想将其转换为8位位图,并将每个不可见(alpha)像素上色为紫色(#FF00FF),并将它们设置为零点。 (第一个调色板)

但是显然,实际图像周围的背景区域和不可见区域具有不同的颜色。 我希望所有这些颜色与背景相同。 我该怎么办?

我尝试了这三个

var cartTotal = parseInt(sessionStorage.getItem("cartTotal"));

第三种方法看起来更好,但是当我将其另存为位图时,它变得相同。

我只想现在就解决它。我在此上浪费了太多时间。

output with background removed

如果我从输出文件中删除背景, 看起来还是很尴尬。

1 个答案:

答案 0 :(得分:0)

您所说的问题有点令人误解:-

  

我想将其转换为8位位图,并将每个不可见(alpha)像素上色为紫色(#FF00FF),并将它们设置为零点。 (第一个调色板)

但是在描述中,您给出了没有alpha通道的输入图像。幸运的是,我已经看到了您先前的问题Convert PNG to 8 bit bitmap,因此我获得了包含alpha(您在说明中提到的图片)的图片,但没有发布。

这里是阿尔法的形象:-

enter image description here

现在,我们必须以.bmp模式获得与此图像等效的P

from PIL import Image

image = Image.open(r"Image_loc")

new_img = Image.new("RGB", (image.size[0],image.size[1]), (255, 0, 255))

cmp_img = Image.composite(image, new_img, image).quantize(colors=256, method=2)

cmp_img.save("Destination_path.bmp")

输出图像:-

enter image description here