如何使用 PIL 将透明图像的背景设置为白色?
How can I set the background of a transparent image to white, using PIL?
我有一张透明背景的 PNG 图片,我想将其调整为另一张图片,但背景是白色而不是透明。
我如何使用 PIL 做到这一点?
这是我的代码:
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")
import Image
from resizeimage import resizeimage
f = Image.open('old.png')
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[:,:,:3][mask] = [r2, g2, b2, alpha2]
data = np.array(f)
f = Image.fromarray(data)
f = f.resize((basewidth,hsize), PIL.Image.ANTIALIAS)
f.save('modified.png', image.format)
你可以检查每个像素的alpha通道是否设置为小于255(这意味着它不是不透明的),然后将其设置为白色和不透明。
如果除了背景之外,图像的其他部分具有透明度,则这可能不是理想的解决方案。
...
pixels = img.load()
for y in range(img.size[1]):
for x in range(img.size[0]):
if pixels[x,y][3] < 255: # check alpha
pixels[x,y] = (255, 255, 255, 255)
img.save("new.png")
我有一张透明背景的 PNG 图片,我想将其调整为另一张图片,但背景是白色而不是透明。 我如何使用 PIL 做到这一点?
这是我的代码:
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")
import Image
from resizeimage import resizeimage
f = Image.open('old.png')
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[:,:,:3][mask] = [r2, g2, b2, alpha2]
data = np.array(f)
f = Image.fromarray(data)
f = f.resize((basewidth,hsize), PIL.Image.ANTIALIAS)
f.save('modified.png', image.format)
你可以检查每个像素的alpha通道是否设置为小于255(这意味着它不是不透明的),然后将其设置为白色和不透明。
如果除了背景之外,图像的其他部分具有透明度,则这可能不是理想的解决方案。
...
pixels = img.load()
for y in range(img.size[1]):
for x in range(img.size[0]):
if pixels[x,y][3] < 255: # check alpha
pixels[x,y] = (255, 255, 255, 255)
img.save("new.png")