我有很多图像。有些是JPEG,有些是PNG。对于PNG,我正在编写一个程序,将所有透明像素转换为纯白色。但是,不仅不起作用,而且某些背景会变为随机颜色,例如红色和绿色。我不知道我在做什么错,所以这是我的代码:
import os
from PIL import Image
files = os.listdir("/Users/Riley/PycharmProjects/myNN/logos")
for file in files:
print(file)
image = Image.open("/Users/Riley/PycharmProjects/myNN/logos/" + file)
pixels = image.load()
if image.mode == 'RGBA':
print("RGBA")
for x in range(image.size[0]):
for y in range(image.size[1]):
if pixels[x, y][3] < 1:
pixels[x, y] == (255, 255, 255, 1)
print(pixels[x, y])
image = image.convert('RGB')
print(pixels[x, y])
用于故障排除。我没有收到任何错误,尽管它只是将其设置为(255,255,255,1),但它仍然打印出随机的RGBA值。
谢谢。
答案 0 :(得分:2)
您不需要这样做。用透明的颜色将白色的新图像制作成与您的图像相同的大小,并粘贴顶部具有透明性的白色图像会更容易,更快,白色将显示出来。
from PIL import Image
# Open original with transparency
im = Image.open('image.png').convert('RGBA')
# Make white background same size
white = Image.new('RGB',im.size,color='white')
# Paste onto background
white.paste(im,mask=im)
# Save
white.save('result.png')
顺便说一句,您只需使用 ImageMagick (完全安装在大多数Linux发行版中,并且适用于macOS和Windows)即可完全不编写任何Python。
首先,在输出目录中放置结果:
mkdir output
然后将所有PNG拼合成白色背景:
magick mogrify -path output -background white -flatten /Users/Riley/PycharmProjects/myNN/logos/*png
如果您的 ImageMagick 为v6或更高版本,请放下magick
并使用:
mkdir output
mogrify -path output -background white -flatten /Users/Riley/PycharmProjects/myNN/logos/*png
答案 1 :(得分:1)
pixels[x, y] == (255, 255, 255, 1)
是一个比较,而不是赋值。
您可能希望将该语句替换为pixels[x, y] = (255, 255, 255, 1)
。