我使用Python Imaging Library打开了灰度图像,将每个像素值复制到另一个相同大小的图像变量并保存。现在,当我用图像查看器打开新图像时,它看起来偏红。我使用了带有和没有" white"的Image.new()方法。和"黑"参数得到了相同的红色输出。
我的代码:
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):
我的代码的Python输出(缩小到500 x 500):
有谁能告诉我我做错了什么?
答案 0 :(得分:2)
您的问题是您想要创建一个有三个通道的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()