簡體   English   中英

Python PIL 完全刪除每個 alpha 通道

[英]Python PIL remove every alpha channel completely

我非常努力地將 PNG 轉換為位圖,但每次都失敗了。

但現在我想我可能找到了一個原因。 這是因為 alpha 通道。 (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)

第三種方法看起來更好,但當我將其保存為位圖時,它變得相同。

我現在只想把它搞定。 我在這上面浪費了太多時間。

去除背景的輸出

如果我從輸出文件中刪除背景,它看起來仍然很尷尬。

正如您所說,您的問題有點誤導:-

我想將它轉換為 8 位位圖並將每個不可見(alpha)像素着色為紫色(#FF00FF)並將它們設置為點零。 (第一個調色板)

但是在描述中,您給出了一個沒有 alpha 通道的輸入圖像。 幸運的是,我已經看到您之前的問題Convert PNG to 8 bit bitmap ,因此我獲得了包含 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")

輸出圖像:-

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM