Python Tkinter: 解决 'NameError: name 'ImageDraw' is not defined' 错误
在使用 Python Tkinter 和 Pillow 库创建圆形头像时,可能会出现 'NameError: name 'ImageDraw' is not defined' 错误。这是因为代码中没有导入 ImageDraw 模块。
正确的代码应该是导入 ImageDraw 模块,并将其重新命名为 imagedraw,然后使用 imagedraw 来创建图像的 draw 对象。以下是修改后的代码:
import tkinter as tk
from PIL import Image, ImageTk, ImageDraw
# 创建窗体
window = tk.Tk()
window.title('圆形头像')
window.geometry('400x400')
# 加载头像图片并调整大小
avatar_image = Image.open('QQ图片20230630224357.jpg')
avatar_image = avatar_image.resize((200, 200), Image.ANTIALIAS)
# 创建头像的圆形遮罩
mask = Image.new('L', avatar_image.size, 0)
imagdraw = ImageDraw.Draw(mask)  # 将 ImageDraw 模块重新命名为 imagedraw
imagdraw.ellipse((0, 0, avatar_image.size[0], avatar_image.size[1]), fill=255)
# 将头像图片应用圆形遮罩
avatar_image = ImageTk.PhotoImage(Image.composite(avatar_image, Image.new('RGBA', avatar_image.size, (0, 0, 0, 0)), mask))
# 创建头像标签并显示头像
avatar_label = tk.Label(window, image=avatar_image)
avatar_label.pack()
# 加载 V 字图标图片并调整大小
v_icon_image = Image.open('V.png')
v_icon_image = v_icon_image.resize((50, 50), Image.ANTIALIAS)
# 将 V 字图标图片应用到头像右下角
avatar_image.paste(v_icon_image, (150, 150), v_icon_image)
window.mainloop()
请确保在运行代码之前,将 'QQ图片20230630224357.jpg' 和 'V.png' 替换为正确的图片路径。
原文地址: https://www.cveoy.top/t/topic/o6TL 著作权归作者所有。请勿转载和采集!