Python图像库使图像变红

2024-10-01 00:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python图像库打开了一个灰度图像,将每个像素值复制到另一个大小相同的图像变量中并保存了它。现在,当我用图像查看器打开新图像时,它看起来是红色的。我用过图片。新建()带有和不带有“white”和“black”参数的方法得到相同的红色输出。你知道吗

我的代码:

from PIL import Image
import math

def run():
    im = Image.open("hrabowski.jpg")
    pix = im.load()
    print im.size
    # print pix[0, 1]

    im2 = Image.new("RGB", (2400, 2400))

    for i in range(im.size[0]):
        for j in range(im.size[0]):
            im2.putpixel((i, j), pix[i, j])

    im2.save("hrabowski-2400-2400.jpg")

原始图像(缩小到500 x 500):

enter image description here

我的代码的Python输出(缩小到500 x 500):

enter image description here

有人能告诉我我做错了什么吗?


Tags: 代码in图像imageimportforsizerange
1条回答
网友
1楼 · 发布于 2024-10-01 00:32:43

你的问题是,你想创建一个RGB图像有三个通道。因此,一个像素值由三个值组成,而不仅仅是一个值(在您的示例中,为每个通道使用原始图像的灰度值)。你知道吗

我已经相应地修改了代码。你知道吗

旁注:我几乎可以肯定,有一个更好的方法来实现你想要的,通常没有必要通过单像素循环,但我不知道你是在追求什么。你知道吗

from PIL import Image
import math

def run():
    im = Image.open("ZHiG0.jpg")
    pix = im.load()
    print im.size
    # print pix[0, 1]

    im2 = Image.new("RGB", (2400, 2400))

    for i in range(im.size[0]):
        for j in range(im.size[0]):
            im2.putpixel((i, j), (pix[i, j],pix[i, j],pix[i, j]))

    im2.save("ZHiG0-2400-2400.jpg")
run()

相关问题 更多 >