У меня есть изображение png с прозрачным фоном, и я хочу изменить его на другое изображение, но на белом фоне вместо прозрачного. Как я могу это сделать с помощью PIL?Python PIL: Как установить фон изображения (png) на белый?
Вот мой код:
basewidth = 200
img = Image.open("old.png")
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)hsize = int((float(img.size[1]) * float(wpercent)))
img.save("new.png")
Update
import numpy as np
import PIL
from PIL import Image
basewidth = 200
img = Image.open("old.png")
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
data = np.array(img)
alpha1 = 0 # Original value
r2, g2, b2, alpha2 = 255, 255, 255,255 # Value that we want to replace it with
red, green, blue,alpha = data[:,:,0], data[:,:,1], data[:,:,2], data[:,:,3]
mask = (alpha==alpha1)
data[:,:,:4][mask] = [r2, g2, b2, alpha2]
img = Image.fromarray(data)
img = img.resize((basewidth,hsize), PIL.Image.ANTIALIAS)
img.save('new.png')
Вот код, предоставляемый @khakishoiab и @Chachmu Спасибо, ребята!
Мы сделали правку, пойти проверить его – khakishoiab
@Banuta Алиня Александр первой догадка будет пытаться заменить данные [:,:,:, 3] с данными [:,:,:, 4] в данных [:,:,:, 3] [mask] = [r2, g2, b2, alpha2] line – Chachmu
Спасибо, теперь он работает как шарм! –