0

Windows 批量转换 iPhone HEIC 照片

折腾

Windows 批量转换 iPhone HEIC 照片:一键转 JPG / WebP(附脚本下载)

今天想把前段时间去非洲的照片导出来,之前我都是发送到微信文件传输助手,然后一张张保存下来,虽然麻烦而且会被压缩,但是苦于没有办法,逛微博看到有数码博主推荐了LocalSend,从此一发不可收拾,如果我不看微博,我可能是世界上最后一个这样传照片的人。

今天尝试一次发送了200多张照片,等我查看文件的时候我傻眼了,我是刚知道,用 iPhone 或 iPad 拍照,照片默认是 .heic 格式。如果不是通过iTunes或者其他软件导出来,类似LocalSend直接发送文件的话,结果都是 .heic,看官方介绍它体积小、画质好,但在 Windows 或部分软件中兼容性一般。

于是借助强大的ChatGPT寻求方法,并且整理分享记录一下。

本文给出两套 Windows 批处理脚本(.bat):一键把 HEIC 批量转为 JPG(通用)或 WebP(更省空间)。
✔ 支持子目录递归、保留目录结构;✔ 自动旋转;✔ 进度条可视化;✔ 生成日志;✔ 简体中文提示。

为什么要转格式?HEIC / JPG / WebP 对比

格式 优点 缺点/兼容性 适用场景
HEIC 体积小、画质好 Windows/部分软件不友好,预览/编辑有门槛 苹果生态内使用
JPG 兼容性最好、通用 体积相对大 打印/分享/全平台
WebP 更省空间、画质可观 老旧软件不支持 网站、图床、博客

一、准备工作:安装 ImageMagick

脚本基于开源工具 ImageMagick,它能读取 HEIC 并输出多种格式。

  1. 前往下载页面,建议选择:
  2. 推荐安装包:ImageMagick-7.x(Win64)Q16-x64-dll.exe(64 位系统 / 16-bit 精度 / 动态版)

  3. 安装时建议勾选:
  4. ✅ Add application directory to your system path
    ✅ Install legacy utilities (e.g. convert)

  5. 安装完成后,按 Win+R 输入 cmd,执行下面指令,有版本号就代表安装成功,可以运行脚本了。
magick -version
关于 LocalSendLocalSend 会把 iPhone 原图(HEIC)无压缩地发到电脑,不会自动转 JPG;所以我们需要在电脑端批量转换,既保留原图质量,又提高后续使用的兼容性/效率。

二、脚本下载与源码

下面提供两套脚本源码。把代码复制到记事本,另存为 .bat 文件即可使用,记事本存储的时候选择UTF-8 无 BOM ANSI 都行。

脚本 A:HEIC → JPG

heic2jpg.bat  默认质量:92; 输出目录:converted_jpg

@echo off
setlocal enableextensions
title HEIC to JPEG (fixed)

rem ===== Params =====
set "SRC=%~1"
if "%SRC%"=="" set "SRC=%CD%"
set "OUT=%~2"
if "%OUT%"=="" set "OUT=%SRC%\converted_jpeg"
set "QUALITY=%~3"
if "%QUALITY%"=="" set "QUALITY=92"

where magick >nul 2>&1 || (
  echo [ERROR] magick.exe not found. Install ImageMagick first.
  pause
  goto :end
)

if not exist "%OUT%" mkdir "%OUT%" 2>nul

rem ===== Count (single pattern to avoid double count) =====
set /a TOTAL=0
for /r "%SRC%" %%F in (*.heic) do set /a TOTAL+=1
if %TOTAL% EQU 0 (
  echo No HEIC files found in "%SRC%".
  pause
  goto :end
)

echo Source : %SRC%
echo Output : %OUT%
echo Format : JPEG
echo Quality: %QUALITY%
echo Files  : %TOTAL%
echo -----------------------------------------

rem ===== Convert =====
set /a DONE=0
for /r "%SRC%" %%F in (*.heic) do call :DO_ONE "%%~fF"

echo -----------------------------------------
echo Done. Output: "%OUT%"
pause
goto :end

:DO_ONE
set /a DONE+=1
set "IN=%~1"
set "TARGET=%OUT%\%~n1.jpg"
echo (%DONE%/%TOTAL%) %~nx1

if exist "%TARGET%" (
  echo   -> skip (exists)
) else (
  magick "%IN%" -auto-orient -colorspace sRGB -quality %QUALITY% "%TARGET%"
  if errorlevel 1 (echo   -> FAIL) else (echo   -> OK)
)
goto :eof

:end
endlocal

脚本 B:HEIC → WebP

heic2webp.bat 默认质量:85; 输出目录:converted_webp

@echo off
setlocal enableextensions
title HEIC to WEBP (fixed)

rem ===== Params =====
set "SRC=%~1"
if "%SRC%"=="" set "SRC=%CD%"
set "OUT=%~2"
if "%OUT%"=="" set "OUT=%SRC%\converted_webp"
set "QUALITY=%~3"
if "%QUALITY%"=="" set "QUALITY=85"

where magick >nul 2>&1 || (
  echo [ERROR] magick.exe not found. Install ImageMagick first.
  pause
  goto :end
)

if not exist "%OUT%" mkdir "%OUT%" 2>nul

rem ===== Count (single pattern to avoid double count) =====
set /a TOTAL=0
for /r "%SRC%" %%F in (*.heic) do set /a TOTAL+=1
if %TOTAL% EQU 0 (
  echo No HEIC files found in "%SRC%".
  pause
  goto :end
)

echo Source : %SRC%
echo Output : %OUT%
echo Format : WEBP
echo Quality: %QUALITY%
echo Files  : %TOTAL%
echo -----------------------------------------

rem ===== Convert =====
set /a DONE=0
for /r "%SRC%" %%F in (*.heic) do call :DO_ONE "%%~fF"

echo -----------------------------------------
echo Done. Output: "%OUT%"
pause
goto :end

:DO_ONE
set /a DONE+=1
set "IN=%~1"
set "TARGET=%OUT%\%~n1.webp"
echo (%DONE%/%TOTAL%) %~nx1

if exist "%TARGET%" (
  echo   -> skip (exists)
) else (
  magick "%IN%" -auto-orient -colorspace sRGB -quality %QUALITY% -define webp:method=6 "%TARGET%"
  if errorlevel 1 (echo   -> FAIL) else (echo   -> OK)
)
goto :eof

:end
endlocal

三、使用方法

最简单(双击运行)

  1. .bat 脚本放到有 HEIC 的文件夹。
  2. 双击运行,等待进度条完成。
  3. 输出在 converted_jpgconverted_webp 目录(保留原有子目录结构)。
  • 第 1 个参数:源目录(为空则默认当前目录)
  • 第 2 个参数:输出目录(为空则默认 converted_xxx
  • 第 3 个参数:质量(1~100;JPG 建议 85~95,WebP 建议 75~90)

四、常见问题

1)运行脚本提示找不到 magick
安装 ImageMagick 时请勾选 “✅ Add application directory to your system path”,或重启命令行窗口后再试。

2)HEIC 无法读取?
用命令检查:magick -list format | findstr /I heic。若无 HEIC 条目,换用推荐安装包重新安装(确保包含 HEIC/HEIF 支持)。

3)进度条不显示?
脚本调用的是内置 PowerShell(Windows 自带)。若被策略限制,可在 PowerShell 以管理员身份运行:Set-ExecutionPolicy RemoteSigned

4)是否会覆盖已存在文件?
脚本默认 跳过已存在同名目标文件(日志中会标注“跳过”)。你也可以改脚本:删除“已存在则跳过”的判断即可覆盖。

5)能否限制最大尺寸、同时压缩?
可以,在 magick 命令后追加 -resize 3000x3000\>(长边不超过 3000px)。

6)显示数量正在转换的数量不对,甚至超过一倍?
对,这个是因为用了两个通配符:*.heic *.HEIC。Windows 文件系统大小写不敏感,for /r 的匹配也是不区分大小写的——结果同一张图会被两个模式各匹配一次,统计数就翻倍(甚至会尝试转换两次,不过我们脚本里“已存在则跳过”会挡住)。

五、简单效果对比

类型 大小 说明
HEIC 原图 3.23 MB iPhone 直出
JPG(质量 92) 5.79 MB 通用、打印分享友好
WebP(质量 85) 2.49 MB 适合网站/图床,省流量
可以看得出来,.heic转换成.jpeg基本文件大小基本要增加80%,.heic转换成.WebP基本文件大小要减少23%,我总共139张照片,之前.heic格式文件夹大小是238 MB,转换成.jpeg后总文件大小是367 MB,转换成.WebP后总文件大小是138 MB
工作流建议:LocalSend把原图(HEIC)一次性传到电脑 → 跑脚本批量转 JPG(对外分享)或 WebP(上传博客/站点)→ 保留原图做长期归档。

六、下载

HEIC转换脚本
1.4 KB
RAR
v1.0.0
2025-08-31
1. 解压密码:无. 2. 解压到照片目录双击运行使用 3. 如有问题请在评论区留言

结语

以上就是我在 Windows 上处理 iPhone HEIC 的实用方案:安装一次 ImageMagick,双击脚本即可批量转换,既提升效率,也不会再被“一个个保存、格式不兼容”折磨。后续要在 输出 PNG/AVIF、保留/移除 EXIF、限制最大分辨率 等进阶功能,我会继续补充脚本版本。