在Python中创建空白图像(允许逐像素操作)

7 投票
1 回答
14392 浏览
提问于 2025-04-16 10:55

我这里有一段代码,它创建了一个Tkinter的画布(Canvas)小部件,然后在里面放了一张图片。

import Tkinter
from PIL import ImageTk, Image


class image_manip(Tkinter.Tk):

    def __init__(self):
        Tkinter.Tk.__init__(self)

        self.configure(bg='red')

        self.ImbImage = Tkinter.Canvas(self, highlightthickness=0, bd=0, bg='blue')
        self.ImbImage.pack()

        self.i = ImageTk.PhotoImage(Image.open(r'test.png'))
        self.ImbImage.create_image(150, 100, image=self.i)


def run():
    image_manip().mainloop()
if __name__ == "__main__":
    run()

我想在这个画布小部件里创建一张空白的图片,这样我就可以逐个像素地进行操作。请问该怎么做呢?

1 个回答

13

如果你想创建一个新的空白图像,而不是打开一个已有的图像,你可以用 Image.new(...) 这个方法来代替 Image.open(...)。这个方法的详细信息可以在 图像模块 中找到。

接下来,你可以使用 self.i.put(...) 来逐个像素地进行操作。(这里的 i 是你示例中的 PhotoImage 对象。)

关于 Tkinter 的 PhotoImage 类,这里有一些基本信息。

撰写回答