Python PIL 完全删除每个 alpha 通道

Python PIL remove every alpha channel completely

我努力尝试将 PNG 顺利转换为位图,但每次都失败了。

但现在我想我可能找到了一个理由。 这是因为 alpha 通道。 ('feather' 在 Photoshop 中)

输入图像:

我预期的输出:

当前输出:

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

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

这三个我都试过了

image = Image.open(file).convert('RGB')


image = Image.open(file)
image = image.convert('P')
pp = image.getpalette()
pp[0] = 255
pp[1] = 0
pp[2] = 255
image.putpalette(pp)


image = Image.open('feather.png')
result = image.quantize(colors=256, method=2)

第三种方法看起来更好,但是当我将它保存为位图时,它变得一样。

我现在只想把它弄完。我在这上面浪费了太多时间。

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

正如您所说,您的问题有点误导:-

I want to convert it to 8bit Bitmap and colour every invisible(alpha) pixels to purple(#FF00FF) and set them to dot zero. (very first palette)

但是在描述中你给出了一个没有 alpha 通道的输入图像。幸运的是,我看到了你之前的问题,因此我获得了包含alpha的图像(你在描述中提到的)但没有发布。

这是阿尔法的图像:-

现在我们必须在 P 模式下获得此图像的 .bmp 等价物。

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")

输出图像:-