python编写一个图片编辑程序,使用thinter组件,功能包括:放大、缩小、裁剪、黑白照、添加水印等功能。
时间: 2023-07-10 15:32:11 浏览: 51
好的,以下是一个基于Python、Pillow库和Tkinter组件的图片编辑程序,可以实现放大、缩小、裁剪、黑白照、添加水印等功能。
请注意,该程序仅供参考,具体实现方式可能因环境、库版本等因素而略有不同。
```python
from tkinter import *
from tkinter import filedialog
from PIL import Image, ImageDraw, ImageFont
class ImageEditor:
def __init__(self, root):
self.root = root
self.root.title("图片编辑")
self.root.geometry("800x600")
self.img = None
# 创建菜单
menubar = Menu(self.root)
self.root.config(menu=menubar)
file_menu = Menu(menubar, tearoff=0)
file_menu.add_command(label="打开", command=self.open_image)
file_menu.add_command(label="保存", command=self.save_image)
file_menu.add_separator()
file_menu.add_command(label="退出", command=self.root.quit)
menubar.add_cascade(label="文件", menu=file_menu)
edit_menu = Menu(menubar, tearoff=0)
edit_menu.add_command(label="放大", command=self.zoom_in)
edit_menu.add_command(label="缩小", command=self.zoom_out)
edit_menu.add_command(label="裁剪", command=self.crop)
edit_menu.add_command(label="黑白照", command=self.convert_to_bw)
edit_menu.add_command(label="添加水印", command=self.add_watermark)
menubar.add_cascade(label="编辑", menu=edit_menu)
# 创建画布
self.canvas = Canvas(self.root, width=800, height=500, bg="white")
self.canvas.pack(side=TOP)
# 创建状态栏
self.statusbar = Label(self.root, text="就绪", bd=1, relief=SUNKEN, anchor=W)
self.statusbar.pack(side=BOTTOM, fill=X)
# 打开图片
def open_image(self):
file_path = filedialog.askopenfilename()
if file_path:
self.img = Image.open(file_path)
self.show_image()
# 显示图片
def show_image(self):
self.canvas.delete("all")
self.canvas.config(width=self.img.width, height=self.img.height)
self.photo_image = ImageTk.PhotoImage(self.img)
self.canvas.create_image(0, 0, anchor=NW, image=self.photo_image)
# 保存图片
def save_image(self):
if self.img:
file_path = filedialog.asksaveasfilename(defaultextension=".jpg")
if file_path:
self.img.save(file_path)
# 放大图片
def zoom_in(self):
if self.img:
self.img = self.img.resize((self.img.width*2, self.img.height*2))
self.show_image()
# 缩小图片
def zoom_out(self):
if self.img:
self.img = self.img.resize((self.img.width//2, self.img.height//2))
self.show_image()
# 裁剪图片
def crop(self):
if self.img:
self.img = self.img.crop((0, 0, self.img.width//2, self.img.height//2))
self.show_image()
# 黑白照
def convert_to_bw(self):
if self.img:
self.img = self.img.convert('L')
self.show_image()
# 添加水印
def add_watermark(self):
if self.img:
draw = ImageDraw.Draw(self.img)
text = "Watermark"
font = ImageFont.truetype("arial.ttf", 36)
textwidth, textheight = draw.textsize(text, font)
x = self.img.width - textwidth - 10
y = self.img.height - textheight - 10
draw.text((x, y), text, font=font, fill=(255, 255, 255, 128))
self.show_image()
if __name__ == '__main__':
root = Tk()
app = ImageEditor(root)
root.mainloop()
```
说明:
- 图片打开、保存、放大、缩小、裁剪、黑白照、添加水印等功能通过Tkinter组件实现。
- 图片文件选择使用了Tkinter中的文件选择对话框。
- 图片编辑通过Pillow库实现。
- 程序主要界面包括菜单、画布和状态栏。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)