如何更改图像某些像素的颜色?

时间:2013-11-01 23:43:42

标签: python image pixel jes

我正试图留下三分之一的图像库存,将中间的所有黑色变为黄色,并将底部的第三个黑色更改为蓝色。我知道如何改变颜色,我面临的问题是我不知道如何只选择三分之一的像素来操纵它们。这就是我所拥有的......

def changeSpots1():
    file = pickAFile()
    picture = makePicture(file) 
    show(picture)
    pix = getAllPixels(picture)
    for p in pix:
        intensity = (getRed(p) + getGreen(p) + getBlue(p))
        c = getColor(p)
        if (intensity < 150):              
            newColour = setColor(p, yellow)
    repaint(picture)

我正在使用一个名为JES的程序来编写这个,因为你想知道像pickAFile这样的命令。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我对JES一无所知,但我猜测getAllPixels按正常顺序返回像素:第一行,然后是下一行,然后是下一行,等等。

如果是这样的话:

pix = getAllPixels(picture)
third = len(pix) // 3
for p in pix[:third]:
    # do top-third stuff
for p in pix[third:third*2]:
    # do middle-third stuff
for p in pix[third*2:]:
    # do bottom-third stuff

这确实假设图片可以完全分成三分之一。如果不是,你将需要知道图片的宽度,这样你就可以舍入到最近的完整行(因为否则前三分之一可能实际上是250个完整行和251st的前47个像素,这看起来不太好) 。我不知道JES有什么功能可以获得宽度,但我确信它很简单。

相关问题