是否有任何方法可以使用pil中的eval函数遍历所有像素,同时检查每个值是什么?程序会在图像中运行,以查看每个像素是否是特定的rgb,如果是,则会将该像素转换为透明度。PIL中的eval函数似乎可以完成这项工作,但是转换像素的函数可以检查它所在像素的值吗提前谢谢。

最佳答案

更新:啊,我知道你想做什么了。下面是一个仅使用pil的示例。它将所有白色像素转换为50%α的红色:

import Image

img = Image.open('stack.png').convert('RGBA')
width, _ = img.size
for i, px in enumerate(img.getdata()):
    if px[:3] == (255, 255, 255):
        y = i / width
        x = i % width
        img.putpixel((x, y), (255, 0, 0, 127))

img.save('stack-red.png')

原始答案:是的,Image.eval()函数允许您传入一个计算每个像素的函数,并允许您确定一个新的像素值:
import Image
img1 = Image.open('foo.png')
# replace dark pixels with black
img2 = Image.eval(img1, lambda px: 0 if px <= 64 else px)

09-25 18:27
查看更多