作者:大大炮 | 来源:互联网 | 2023-12-14 17:46
本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。
tkinter.filedialog.asksaveasfilename() # 选择以什么文件名保存,返回文件名
tkinter.filedialog.askopenfilename() # 选择打开什么文件,返回文件名
有时候我们想要以选择文件对话框的格式打开一张图片或者保存图片,我在尝试之后把我的代码分享给大家作为参考:
打开一张图片并显示
root = tkinter.Tk() # 创建一个Tkinter.Tk()实例
root.withdraw() # 将Tkinter.Tk()实例隐藏
default_dir = r"文件路径"
file_path = tkinter.filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser(default_dir)))
image = Image.open(file_path)
plt.imshow(image)
plt.show()
只需要在弹出对话框后选择要打开的图片就可以了。如下图所示:
保存图片
fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("PNG", ".png")])
picture.save(str(fname) + '.png', 'PNG')
只需要在弹出对话框后选择保存位置,输入图片名字即可。如下图所示:
【注】如果不加以下两行代码:
root = tkinter.Tk() # 创建一个Tkinter.Tk()实例
root.withdraw() # 将Tkinter.Tk()实例隐藏
程序运行后将会出现以下一个小框:
参考自 https://blog.csdn.net/weixin_40283816/article/details/83387965
https://blog.csdn.net/sinat_41104353/article/details/79323064
我的测试:
eg1:打开文件夹保存图片
import cv2
from tkinter import *
import tkinter.filedialog
root = tkinter.Tk() # 创建一个Tkinter.Tk()实例
root.withdraw() # 将Tkinter.Tk()实例隐藏
fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("jpg", ".png")])
a=cv2.imread('15.jpg')
cv2.imwrite(str(fname) + '.png',a)
eg2:打开文件夹保存csv文件
from tkinter import *
import tkinter.filedialog
root = tkinter.Tk() # 创建一个Tkinter.Tk()实例
root.withdraw() # 将Tkinter.Tk()实例隐藏
fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("csv", ".CSV")])
fname=fname+'.csv'
# coding: utf-8
import csv
import pandas as pd
csvfile = open(fname, 'w') #打开方式还可以使用file对象
name=['姓名', '年龄', '电话']
list1 = [
('小河', '25', '1234567'),
('小芳', '18', '789456')
]
test=pd.DataFrame(columns=name,data=list1)
test.to_csv(fname)
eg3:
import pandas as pd
from tkinter import *
import tkinter.filedialog
root = tkinter.Tk() # 创建一个Tkinter.Tk()实例
root.withdraw() # 将Tkinter.Tk()实例隐藏
fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("csv", ".CSV")])
fname=fname+'.csv'
X_lst=[-0.0, 0.1, -0.4, 0.2, 0.0, -0.4, 0.1, 0.2, -0.2, 0.1]
Y_lst=[0.7, 1.0, 0.6, 1.0, 0.9, 1.3, 0.9, 0.5, 1.1, 0.5]
date_lst=['2019-03-02 16:29:51', '2019-03-02 16:29:51', '2019-03-02 16:29:51',
'2019-03-02 16:29:51', '2019-03-02 16:29:51', '2019-03-02 16:29:51',
'2019-03-02 16:29:51', '2019-03-02 16:29:51', '2019-03-02 16:29:52',
'2019-03-02 16:29:52']
data_csv=[]
for i in zip(date_lst,X_lst,Y_lst):
data_csv.append(i)
print(data_csv)
name=['0Time', '0X', '0Y']
test=pd.DataFrame(columns=name,data=data_csv)
test.to_csv(fname)