我正在嘗試將影像從 RGBA 轉換為 RGB。但是轉換為 RGB 會為影像添加填充。如何在沒有填充的情況下進行轉換?或者我怎樣才能洗掉它?
img = Image.open('path.png')
img.save("img.png")
rgb_im = img.convert('RGB')
rgb_im.save("rgb_im.png")
謝謝你。下圖,轉換前后:


uj5u.com熱心網友回復:
如果你打開你的第一張圖片,你會看到畫布比可見圖片大,因為你有一個透明的框架,由具有rgba=(255,255,255,0). 當您alpha通過將 RGBA 轉換為 RGB 來洗掉通道時,該透明度會消失,只剩下rgba=(255,255,255)剩下的,結果是您在第二張影像中看到的白色。
所以你想做一些類似于這里建議的東西
from PIL import Image, ImageChops
def trim_and_convert(im):
bg = Image.new(im.mode, im.size, (255,255,255,0))
diff = ImageChops.difference(im, bg)
diff = ImageChops.add(diff, diff, 2.0, -100)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox).convert('RGB')
im = Image.open("path.png")
rgb_im = trim_and_convert(im)
rgb_im.save("rgb_im.png")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471350.html
上一篇:使用HTML或APP調整大小時PNG影像會丟失質量嗎
下一篇:將MediaPicker影像添加到ListView會導致System.ObjectDisposedException
