使用putpixel()无法向图像写入像素值

4 投票
2 回答
21883 浏览
提问于 2025-04-16 03:18

我正在对一张图片(srcImage)使用putpixel,这张图片的宽度是134,高度是454。

这里的代码获取了字体某部分的颜色值,分别是红色、绿色和蓝色的值,具体是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 个回答

0

我知道这是一篇很老的帖子,但对于那些想先用putpixels()的初学者来说,这里有个解决办法:

首先要这样初始化图像变量:

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

如果你想处理RGB值,一定要把它初始化为'RGB'。

有时候,人们会把图像初始化成:

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

然后再尝试使用RGB值,这样是行不通的

6

与其使用 putpixel()getpixel() 这两个方法,不如直接用索引来操作。对于 getpixel(),你可以用 pixels[1, 1] 来获取像素的颜色;而对于 putpixel(),你可以用 pixels[1, 1] = (r, g, b) 来设置像素的颜色。这样做的效果是一样的,但速度会快很多。这里的 pixels 是通过 image.load() 得到的。

不过,我不明白为什么会不工作。理论上应该没有问题。也许是因为 jpeg 格式的压缩导致了问题。你有没有试过把文件保存为 png 或 gif 格式?或者尝试设置多个像素的颜色?

撰写回答