如何更改给定矩形中的所有像素

时间:2014-11-10 22:35:29

标签: python pixel

我需要创建一个函数,它接受矩形的尺寸,然后是所需的像素颜色。到目前为止,我的功能看起来像这样:

def makeRectangle(width, height, desiredPixel):

    # Begin with a rectangle image with all black pixels
    resultImage = EmptyImage(width, height)

    # Creates the total size of the rectangle image
    size = width * height

    # Change the color of all pixels
    for i in range(width):
        resultImage.setPILPixel(i, width, desiredPixel)

    return resultImage

我认为我需要使用嵌套的for循环,但我找不到让所有像素颜色都能改变的方法。我现在的功能产生了要改变的中间像素线。

3 个答案:

答案 0 :(得分:1)

PIL具有绘制矩形的功能:

draw = ImageDraw.Draw(resultImage)
draw.rectangle([0,0,width,height], fill=desiredPixel)

在Python中循环很慢,因此最好找到一个优化的函数来完成这类工作。

答案 1 :(得分:1)

不清楚您是否想要弄清楚如何循环,或者只想创建具有特定颜色的新图像。如果是后者,您可以在制作新图像时指定背景颜色,因此根本不需要循环:

im = Image.new("RGB", (width, height), "white")

或者您可以使用fill或仅使用十六进制值指定颜色:

im = Image.new("RGB", (width,height), "#ddd" )

答案 2 :(得分:0)

您需要迭代x和y尺寸才能更改所有像素:

for x in range(width):
    for y in range(height):
        resultImage.setPILPixel(x, y, desiredPixel)

应该这样做。