我有两段代码,它们都应该创建包含黑色方块的test.png。第一个做到了,但第二个返回一个透明的方块。它们之间的区别在于第一个在左边有一个清晰的条纹而第二个没有。
第一个例子:
root = Tk()
image = PhotoImage(width = 50, height = 50)
for x in range(1, 50):
for y in range(50):
pixel(image, (x,y), (0,0,0))
image.write('test.png', format='png')
第二个例子:
root = Tk()
image = PhotoImage(width = 50, height = 50)
for x in range(50):
for y in range(50):
pixel(image, (x,y), (0,0,0))
image.write('test.png', format='png')
我还导入tkinter并使用函数pixel(),它具有以下代码:
def pixel(image, pos, color):
"""Place pixel at pos=(x,y) on image, with color=(r,g,b)."""
r,g,b = color
x,y = pos
image.put("#%02x%02x%02x" % (r,g,b), (x, y))
答案 0 :(得分:1)
简而言之:Tkinter的PhotoImage
课程无法真正保存PNG。它只支持GIF,PGM和PPM。您可能已经注意到预览图像已正确着色,但是当您打开文件时,它是空白的。
要保存PNG图像,您必须使用Python Imaging Library,或者对于Python 3,Pillow。 有了这个,图像创建就更容易了:
from PIL import Image
image = Image.new("RGB", (50, 50), (0,0,0))
image.save('test.png', format='PNG')
如果需要,可以将其转换为可在Tkinter中使用的PIL ImageTk.PhotoImage
对象。