使用putpixel()函数无法将像素值写入图像。

4
我正在一个w = 134,h = 454的图像(srcImage)上使用putpixel。
以下代码获取了字体部分的r、g、b值,这个部分的值是0,255,0(我通过调试和打印选项找到的)。
image = letters['H']  
r,g,b = image.getpixel((1,1)) #Note r g b values are 0, 255,0
srcImage.putpixel((10,15),(r,g,b))   
srcImage.save('lolmini2.jpg')

这段代码没有报错。然而,当我检查保存的图像时,我无法发现纯绿色像素。

2个回答

6

不要使用putpixel()getpixel(),而应该使用索引。对于getpixel(),您可以使用pixels[1, 1],对于putpixel,您可以使用pixels[1, 1] = (r, g, b)。它应该具有相同的功能,但速度更快。这里的pixelsimage.load()

然而,我不知道为什么它不起作用。它应该没有问题。也许是jpeg压缩导致的问题。您是否尝试将其保存为png / gif文件?或设置多个像素。


1
同意。JPEG 压缩几乎肯定会冲淡像素。PNG 是你的好朋友。 - Blair Conrad

0

我知道这是一个非常旧的帖子,但是对于想要一段时间内坚持使用putpixels()的初学者,这里有解决方案:

将图像变量初始化为:

from PIL import Image
img = Image.new('RGB', [200,200], 0x000000)

如果您想操作RGB值,请确保将其初始化为“RGB”。

有时人们将图像初始化为:

img = Image.new('I', [200, 200], 0x000000)

然后尝试使用 RGB 值进行操作,但是无法正常工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接