Python Imaging Library-更改遇到的最后一个颜色

时间:2013-10-13 03:33:35

标签: python python-imaging-library

正如标题所说,我希望能够用遇到的不同像素的最后一个像素来改变像素的颜色。例如,在下面的图片中,我希望能够将橙色像素替换成橙色像素,但是简单地说像素= =黑色,像素=橙色不会起作用,因为我计划将代码应用于更复杂的图片。下面的代码是我最初的尝试:感谢任何帮助!

 for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0):
            currentPixel_2 =

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用变量来保存您遇到的上一个像素的值。

previous_pixel = None
for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0) and previous_pixel:
            image_test.putpixel((x,y), previous_pixel)
        else:
            previous_pixel = currentPixel_2

我认为大多数线条在这里应该很明显,但基本上,如果你不是黑色像素,你在循环中做的最后一件事是将当前像素分配给previous_pixel,所以你的下一个通过循环,如果它是黑色的,你可以使用先前的像素值。

if currentPixel_2 == (0,0,0) and previous_pixel以防你的第一个像素为黑色,而你还没有previous_pixel值,我只是跳过它,尽管你可以做你想做的事。第一个像素问题的另一种方法是在开始循环之前为previous_pixel分配一些值。

另外,顺便说一下,你在这里迭代单个像素,这将是相当慢的。如果你需要加快速度,你可以用numpy来做。