我正在做一个学校项目(我只懂得基本的编程,而且python是我唯一知道的语言),需要改变像素颜色来在图片中编码信息,但PIL的putpixel似乎无法工作,这是我的代码。
附注:所有关于PIL的信息都是自学的,英语不是我的主要语言,如果您能使用简化的语言交流我会非常感激。
from PIL import Image
e=input('file and location? ')
img=Image.open(e)
pmap=img.load()
imy=img.height
imx=img.width
if int(input('1 for encoding, 2 for decoding '))==1:
a=input('Your message? ')
for i in range(len(a)):
r , g , b=img.getpixel((i+10,imy//2))
img.putpixel((i+10,imy//2),(ord(a[i]),g,b))
r,g,b=img.getpixel((len(a)+10,imy//2))
img.putpixel((len(a)+10,imy//2),(999,g,b)) #999 is the stop code in decoding
else:
r=u=0
m=''
while r!=999:
r , g , b=img.getpixel((10+u,imy//2))
m+=chr(r)
u+=1
print(m[:len(a)-1])
img.save(e)
请注意,我并不想改变视觉效果,并且我已经完成了调试。此外,没有错误,但是putpixel却无法正常工作。正如我所说,我是编程新手,如果有愚蠢的错误,请见谅。
a=input('Your message? ')
语句下面添加print a
,确保您实际上存储了预期的值。同样地,再添加几个print
语句。 - Héctor Valverde