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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐