def save(): # 获取当前显示的图片 img = l1.image if img is None: return # 弹出一个对话框,让用户选择保存文件的位置和文件名 filename = filedialog.asksaveasfilename(defaultextension='.jpg') if filename: # 保存图片 img.imwrite(filename,img)代码优化
时间: 2024-03-23 09:38:45 浏览: 11
在你的代码中,存在几个问题:
1. `img`对象没有`imwrite`方法,应该使用`Image`对象的`save`方法来保存图片。
2. 在使用`asksaveasfilename`方法时,应该指定文件类型的过滤器,否则用户可以选择保存任何类型的文件。
3. 代码中的缩进存在问题,需要进行修改。
下面是一个经过优化的代码示例:
``` python
from tkinter import filedialog
from PIL import ImageTk
def save():
# 获取当前显示的图片
img = l1.image
if img is None:
return
# 弹出一个对话框,让用户选择保存文件的位置和文件名
filetypes = [('JPEG', '*.jpg'), ('PNG', '*.png')]
filename = filedialog.asksaveasfilename(defaultextension='.jpg', filetypes=filetypes)
if filename:
# 保存图片
img.save(filename)
```
在上面的代码中,我们使用`PIL`库中的`Image`对象的`save`方法来保存图片,同时在使用`asksaveasfilename`方法时,指定了文件类型的过滤器,这样就可以限制用户只能选择保存指定类型的文件了。同时,我们还对代码中的缩进进行了修正,让代码更加规范易读。