当我们在日常生活中处理直角图或者当头像时,有时候会发现它们不够美观或不符合我们的需求。在这种情况下,可以通过下面图像处理工具可以将选择的图片转换为圆形图像,通过将直角图转换为圆形,圆形图像在视觉上更加柔和和和谐,可以带来更好的视觉体验。
代码:
from PIL import Image, ImageDraw, ImageTk
import tkinter as tk
from tkinter import filedialog
def 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_image
def 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将图片改为圆形图像
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论