吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3671|回复: 21
收起左侧

[Python 原创] heic格式批量转换jpg

[复制链接]
daokunn 发表于 2025-11-1 22:32

heic转换的工具有很多,但如果图片涉及隐私之类担心泄露,那么自行去编写脚本是最好的选择,大家有需要自取,也可在我的代码基础上修改!

一、准备工作

在开始转换前,需要完成以下两项准备工作,确保代码能正常运行。

  1. 安装 Python 环境
    下载 Python:访问Python 官方网站,根据自己的操作系统(Windows/macOS)选择对应的 Python 3.x 版本(推荐 3.8 及以上)进行下载。
  2. 安装所需 Python 库

本教程需要用到两个关键库:Pillow(处理图片)和pillow-heif(支持 HEIC 格式解析),通过以下命令快速安装:

  • 打开命令提示符 / 终端,输入以下命令并回车:

    pip install pillow pillow-heif

    若安装速度较慢,可以使用国内镜像源加速,命令如下:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow pillow-heif

二、源代码

import os
from PIL import Image
import pillow_heif  # 轻量级HEIC处理库

def convert_heic_to_jpg(input_folder, output_folder):
    """将HEIC文件转换为JPG,保存到指定文件夹"""
    # 初始化pillow-heif
    pillow_heif.register_heif_opener()  # 注册HEIC格式支持

    # 处理路径
    input_folder = input_folder.strip()
    output_folder = output_folder.strip()

    # 检查输入文件夹
    if not os.path.exists(input_folder):
        print(f"错误:输入文件夹 '{input_folder}' 不存在")
        return

    # 创建输出文件夹
    os.makedirs(output_folder, exist_ok=True)

    converted_count = 0
    skipped_count = 0

    # 遍历文件
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(('.heic', '.heif')):
            heic_path = os.path.join(input_folder, filename)
            jpg_filename = os.path.splitext(filename)[0] + '.jpg'
            jpg_path = os.path.join(output_folder, jpg_filename)

            # 跳过已存在的JPG
            if os.path.exists(jpg_path):
                print(f"已跳过:{filename}(JPG已存在)")
                skipped_count += 1
                continue

            try:
                # 用Pillow直接打开HEIC(因为注册了opener)
                with Image.open(heic_path) as img:
                    # 保存为JPG(质量95)
                    img.save(jpg_path, "JPEG", quality=95)
                print(f"已转换:{filename} -> 保存至 {output_folder}")
                converted_count += 1
            except Exception as e:
                print(f"转换失败:{filename} - 错误:{str(e)}")

    print("\n转换完成!")
    print(f"成功转换:{converted_count} 个文件")
    print(f"已跳过:{skipped_count} 个文件")

if __name__ == "__main__":
    # 输入文件夹(HEIC所在路径)
    input_folder = r"D:\test1\hec"  # 直接粘贴路径

    # 输出文件夹(JPG保存路径)
    output_folder = r"D:\test1\jpg_output"  # 自定义路径

    convert_heic_to_jpg(input_folder, output_folder)

三、操作步骤

了解代码逻辑后,按照以下步骤即可快速完成 HEIC 图片批量转换。

  1. 准备 HEIC 图片文件夹
  • 将所有需要转换的 HEIC/HEIF 图片整理到同一个文件夹中(例如D:\HEIC图片),建议文件夹路径中不要包含中文或特殊符号(如空格、括号),避免出现路径识别错误。
  1. 修改代码中的路径
  • 打开一个文本编辑器(如记事本、VS Code、PyCharm 等),将上述完整代码复制粘贴进去。

  • 找到代码中if name == "main":下方的两个路径:

  • input_folder:将其修改为你存放 HEIC 图片的文件夹路径,例如input_folder = r"D:\HEIC图片"(路径前加r是为了避免路径中的\被识别为转义字符)。

  • output_folder:设置转换后 JPG 图片的保存路径,例如output_folder = r"D:\JPG图片输出"(若该文件夹不存在,代码会自动创建)。

  1. 运行代码

用 PyCharm 运行:

  • 打开 PyCharm,新建一个 Python 文件,将代码粘贴进去并修改路径。

  • 点击文件右上角的 “运行” 按钮(绿色三角形),或右键选择 “Run ' 文件名 '”,即可执行代码。

  1. 查看转换结果
  • 代码运行过程中,会实时打印每个文件的转换状态(如 “已转换”“已跳过”“转换失败”)。

  • 转换完成后,打开output_folder对应的文件夹,即可看到转换后的 JPG 图片,图片名称与原 HEIC 文件一致。



运行结果

运行结果

免费评分

参与人数 6吾爱币 +12 热心值 +5 收起 理由
CHen9394 + 1 我很赞同!
bluegege + 1 + 1 我很赞同! 这个不错
hrh123 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
nimo + 1 + 1 谢谢@Thanks!
grrr_zhao + 1 + 1 谢谢@Thanks!
Oldpit + 1 + 1 热乎滴

查看全部评分

本帖被以下淘专辑推荐:

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

Oldpit 发表于 2025-11-1 22:59
热乎滴  不错不错  需要需要
r01253 发表于 2025-11-1 23:23
lishengde322 发表于 2025-11-2 00:24
yigesuren 发表于 2025-11-2 09:57
啊,我不会玩,不会用
nimo 发表于 2025-11-2 11:53
谢谢,这个需要的,试试先。
t9k9k9 发表于 2025-11-2 17:02
试了一下好像转换不来啊亲  我的heic文件转不了
 楼主| daokunn 发表于 2025-11-2 21:03
t9k9k9 发表于 2025-11-2 17:02
试了一下好像转换不来啊亲  我的heic文件转不了

你给我一张测试用的图片来,我有时间测试一下,我自己手机拍出来的heic可以转化
shane5201 发表于 2025-11-2 21:12
没有必要转换图片了,整个看图软件就能够看HEIC图片了
icristopher 发表于 2025-11-2 22:24
还是库的基本应用。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-10-22 18:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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