【python实用小脚本-159】Python JPG↔PNG一键互转:告别格式烦恼,小白也能秒换图
Python JPG↔PNG一键互转:告别格式烦恼,小白也能秒换图
关键词:格式转换、图形界面、拖拽选择、一键互转、Pillow库
故事开场:你的瑞士军刀式小烦恼
周五晚上,你把精心修好的照片发给打印店,对方秒回:“只收 PNG!”可你手里全是 JPG。
你急得像热锅蚂蚁,搜“在线转换”却被广告淹没,还担心隐私泄露。
这时,桌上出现一把“瑞士军刀”——一个只有 60 行的 Python 小脚本。双击后弹出一个干净小窗口,点一下按钮,选图、保存,3 秒搞定,打印店立刻说“OK”。
这把刀就是 jpg_to_png.py,它把“格式不对”的世纪难题变成了“点一下”的快乐。
代码解析
1. 先搭个门面:弹出图形窗口
这段像搭乐高底板,用 tkinter 拼一个 500×500 的小窗,标题写上“JPG to PNG and ViceVersa”,让你第一眼就知道该干嘛。
import tkinter as tk
root = tk.Tk()
root.title('JPG to PNG and ViceVersa')
root.geometry('500x500+400+200')
root.mainloop()
2. 挑图小能手:文件选择框
filedialog 像一位贴心小秘书,帮你打开系统自带的“选文件”窗口,只把路径交回给程序,你不用手打地址。
from tkinter import filedialog as fd
import_filename = fd.askopenfilename() # 弹出选择框
export_filename = fd.asksaveasfilename(defaultextension='.png') # 弹出保存框
3. 真正的魔法:Pillow 一键转格式
Pillow 是瑞士军刀里最锋利的那片刀刃。打开图片、另存为另一种格式,一行 save 就完事。
from PIL import Image
im = Image.open(import_filename) # 读图
im.save(export_filename) # 存成另一种格式
4. 成功 or 失败:弹窗告诉你
无论转换成功还是文件选错,小窗口都会冒泡提示,成功说“Congratulations”,失败说“Something Went Wrong”,你一看就懂。
from tkinter import messagebox
messagebox.showinfo('Congratulations', 'Your image is converted!')
messagebox.showerror('Fail!!', 'Something Went Wrong.')
想让瑞士军刀更锋利?两个小扩展
扩展1:一次拖一堆——批量转换
把单文件改成循环文件夹,所有 JPG 秒变 PNG,再不用一张张点。
import os
folder = fd.askdirectory() # 选整个文件夹
for file in os.listdir(folder):
if file.endswith('.jpg'):
im = Image.open(os.path.join(folder, file))
im.save(os.path.join(folder, file[:-4] + '.png'))
messagebox.showinfo('Done', '全部转换完成!')
扩展2:拖进去就行——支持拖拽
给窗口加一点点“魔法粉”,把图片拖进来就能自动识别并转换,连按钮都不用点。
# 需要额外安装 tkinterdnd2
from tkinterdnd2 import DND_FILES, TkinterDnD
root = TkinterDnD.Tk()
entry = tk.Entry(root, width=40)
entry.pack(pady=20)
def drop(event):
file = event.data.strip('{}')
if file.lower().endswith('.jpg'):
im = Image.open(file)
im.save(file[:-4] + '.png')
messagebox.showinfo('Done', '拖进来就转好!')
entry.drop_target_register(DND_FILES)
entry.dnd_bind('<<Drop>>', drop)
root.mainloop()
总结
jpg_to_png.py 把复杂的图片格式转换藏在一个双击即用的图形小窗后面:挑图、点按钮、完事。它用不到十行核心代码完成转换,再用弹窗告诉你结果,零基础也能 3 分钟跑起来。加上批量或拖拽扩展,你就能一次性处理整文件夹,或直接把图拖进去——瑞士军刀瞬间升级成瑞士军炮,格式烦恼从此消失。
源码获取
完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG
更多推荐
所有评论(0)