吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3667|回复: 24
收起左侧

[其他转载] HEIC格式图片转化为JPEG格式图片

   关闭 [复制链接]
笔墨纸砚 发表于 2024-12-31 09:04
本帖最后由 笔墨纸砚 于 2024-12-31 09:08 编辑

https://www.52pojie.cn/forum.php ... 7056&highlight=heic
优化一下这个代码 并且打包

打包软件:https://dongharry.lanzn.com/imPuN2jh1axi


from PIL import Image
import pillow_heif
import os
import tkinter as tk
from tkinter import filedialog, messagebox

def recycle_convert(org_path, dst_path):
    """递归转换 HEIC 文件为 JPG 文件"""
    if os.path.isdir(org_path):
        file_list = os.listdir(org_path)
        for file in file_list:
            sub_path = os.path.join(org_path, file)
            recycle_convert(sub_path, dst_path)
    elif os.path.isfile(org_path):
        path, filename = os.path.split(org_path)
        name, ext = os.path.splitext(filename)
        if ext.lower() == ".heic":
            try:
                heif_file = pillow_heif.read_heif(org_path)
                image = Image.frombytes(
                    heif_file.mode,
                    heif_file.size,
                    heif_file.data,
                    "raw",
                    heif_file.mode,
                    heif_file.stride,
                )
                file_path = os.path.join(dst_path, f"{name}.jpg")
                image.save(file_path, "JPEG")
            except Exception:
                pass

def select_folder(entry_field):
    """打开文件夹选择对话框并更新输入框的内容"""
    folder_selected = filedialog.askdirectory()
    if folder_selected:
        entry_field.delete(0, tk.END)
        entry_field.insert(0, folder_selected)

def execute_conversion(input_path, output_path):
    """执行文件夹转换"""
    if not os.path.exists(input_path):
        messagebox.showerror("Error", "Input folder does not exist.")
        return

    if not os.path.exists(output_path):
        os.makedirs(output_path)

    recycle_convert(input_path, output_path)
    messagebox.showinfo("Success", "Conversion completed successfully!")

def handle_drag(event, entry_field):
    """处理拖拽文件夹事件"""
    folder_path = event.widget.get().strip()
    if os.path.isdir(folder_path):
        entry_field.delete(0, tk.END)
        entry_field.insert(0, folder_path)
    else:
        messagebox.showerror("Error", "Please drag a valid folder.")

def main():
    """创建主 GUI 界面"""
    root = tk.Tk()
    root.title("HEIC to JPG Converter")

    # 输入文件夹部分
    tk.Label(root, text="Input Folder:").grid(row=0, column=0, padx=10, pady=10, sticky="w")
    input_folder = tk.Entry(root, width=50)
    input_folder.grid(row=0, column=1, padx=10, pady=10)
    tk.Button(root, text="Browse", command=lambda: select_folder(input_folder)).grid(row=0, column=2, padx=10, pady=10)

    # 输出文件夹部分
    tk.Label(root, text="Output Folder:").grid(row=1, column=0, padx=10, pady=10, sticky="w")
    output_folder = tk.Entry(root, width=50)
    output_folder.grid(row=1, column=1, padx=10, pady=10)
    tk.Button(root, text="Browse", command=lambda: select_folder(output_folder)).grid(row=1, column=2, padx=10, pady=10)

    # 执行按钮
    tk.Button(
        root,
        text="Convert",
        command=lambda: execute_conversion(input_folder.get(), output_folder.get())
    ).grid(row=2, column=0, columnspan=3, pady=20)

    root.mainloop()

if __name__ == "__main__":
    main()

免费评分

参与人数 7吾爱币 +7 热心值 +6 收起 理由
luckok + 1 我很赞同!66
ericcui + 1 + 1 我很赞同!
星辰大海Chenlin + 1 + 1 好人一胎十个
rewqpojie + 1 + 1 谢谢@Thanks!
anan505 + 1 + 1 牛,果然非常好用
苏紫方璇 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
liyitong + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 笔墨纸砚 发表于 2024-12-31 09:11
额 找的时候一个找不到 刚才随便刷 刷到一堆
missing616 发表于 2024-12-31 09:21
zwt6886 发表于 2024-12-31 09:27
Seagant 发表于 2024-12-31 09:39
感谢分享,学习一下!
小木木XX 发表于 2024-12-31 09:47
感谢大佬分享,学习一下!
ianlcc 发表于 2024-12-31 13:20
谢谢大佬的分享!
下载来试试看
QAnony 发表于 2024-12-31 13:27
大批量时的转换速度怎么样?
JieW_L 发表于 2024-12-31 14:09
iphone好像自带这个设置
宜城小站 发表于 2024-12-31 14:12
图片软件现在已经很多了哦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-3 02:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表