使用Python将图片改为圆形图像

admin 2024年2月12日14:06:24评论9 views字数 2454阅读8分10秒阅读模式

使用Python将图片改为圆形图像当我们在日常生活中处理直角图或者当头像时,有时候会发现它们不够美观或不符合我们的需求。在这种情况下,可以通过下面图像处理工具可以将选择的图片转换为圆形图像,通过将直角图转换为圆形,圆形图像在视觉上更加柔和和和谐,可以带来更好的视觉体验。

代码:

from PIL import Image, ImageDraw, ImageTkimport tkinter as tkfrom tkinter import filedialogdef convert_to_circle(image_path):    # 打开图片并转换为RGBA模式    image = Image.open(image_path).convert("RGBA")    # 创建一个与图片大小相同的透明背景图像    circle_image = Image.new('RGBA', image.size, (0, 0, 0, 0))    # 创建一个画笔    draw = ImageDraw.Draw(circle_image)    # 画一个圆形    draw.ellipse((0, 0, image.size[0], image.size[1]), fill=(255, 255, 255, 255))    # 将原始图片应用到遮罩上    circle_image.paste(image, (0, 0), mask=circle_image)    # 返回圆形边缘图像    return circle_imagedef select_image():    # 打开文件对话框,选择图片文件    file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg;*.jpeg;*.png")])    # 如果选择了图片文件,则进行转换并显示在程序中    if file_path:        circle_image = convert_to_circle(file_path)        circle_image.thumbnail((300, 300))  # 缩小图像以适应显示区域        photo = ImageTk.PhotoImage(circle_image)  # 将图像转换为PhotoImage对象        image_label.configure(image=photo)        image_label.image = photo  # 保持对图像的引用        image_label.circle_image = circle_image  # 保存原始的PIL图像def save_image():    # 获取当前显示的图像    circle_image = image_label.circle_image    # 如果有图像,则保存为文件    if circle_image:        save_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")])        if save_path:            circle_image.save(save_path)            print("图像已保存为:", save_path)# 创建主窗口window = tk.Tk()window.title("圆形图像转换---微信公众号:蓝胖子之家")window.geometry("400x400")# 创建选择按钮select_button = tk.Button(window, text="选择图片", command=select_image)select_button.pack(pady=10)# 创建图像显示区域image_label = tk.Label(window)image_label.pack()# 创建保存按钮save_button = tk.Button(window, text="保存图像", command=save_image)save_button.pack(pady=10)# 运行主循环window.mainloop()

首先,我们导入了所需的库。PIL库用于图像处理,tkinter库用于创建GUI界面。

接下来,我们定义了一个名为convert_to_circle的函数,用于将选择的图片转换为圆形图像。这个函数接受一个图片路径作为参数,并返回处理后的圆形图像。

convert_to_circle函数中,我们首先打开图片并将其转换为RGBA模式。然后,创建一个与原始图片大小相同的透明背景图像。接着,创建一个画笔对象,并使用它绘制一个圆形,圆形的位置和大小与原始图片相同,填充颜色为白色。最后,将原始图片应用到透明背景图像上,使用透明背景图像作为遮罩。最终,返回处理后的圆形图像。

接下来,我们定义了一个名为select_image的函数,用于选择图片文件并将其转换为圆形图像。在这个函数中,我们打开文件对话框,选择图片文件,并获取选择的文件路径。如果选择了图片文件,则调用convert_to_circle函数将图片转换为圆形图像。然后,将图像缩小以适应显示区域,并将其显示在程序中的图像标签上。

最后,我们定义了一个名为save_image的函数,用于保存当前显示的圆形图像为文件。在这个函数中,我们获取当前显示的圆形图像,并打开文件对话框选择保存路径。如果选择了保存路径,则将图像保存为文件。

在主程序中,我们创建了一个主窗口,并设置窗口的标题和大小。然后,创建了一个选择按钮,点击按钮时调用select_image函数。接着,创建了一个用于显示图像的标签。最后,创建了一个保存按钮,点击按钮时调用save_image函数。

最后,通过运行主循环启动应用程序,等待用户的交互操作。

代码中使用了PIL库(Python Imaging Library)来处理图像,以及tkinter库来创建图形用户界面。它通过将图像转换为PhotoImage对象,并将其赋值给图像显示区域的image属性,来显示图像。同时,它还保持了对原始PIL图像的引用,以便在保存图像时使用。

运行效果:

使用Python将图片改为圆形图像

使用Python将图片改为圆形图像

后台回复圆形图像转换获取文章工具

原文始发于微信公众号(蓝胖子之家):使用Python将图片改为圆形图像

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月12日14:06:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用Python将图片改为圆形图像https://cn-sec.com/archives/2488818.html

发表评论

匿名网友 填写信息