windows自带powershell可无损批量转换图片格式,支持heic/webp等,保留alpha通道和exif;批处理仅改后缀不转码;照片应用适合少量图;注册表可添加右键菜单实现高频便捷转换。

你需要把几十张手机拍的HEIC、PNG或BMP图片统一转成JPG上传报名系统,或是把相机导出的JPG批量存为PNG保留透明背景——Windows系统自带工具就能完成,无需安装软件、不传云端、不花一分钱。
用PowerShell真正编码级转换(推荐)
这一步是唯一能保证画质无损、支持HEIC/WebP等复杂格式、且不依赖第三方解码器的方法。它调用Windows底层.NET图像类,逐张解码再以目标格式重新编码保存,连Alpha通道和EXIF元数据都原样保留。
第一步:以管理员身份打开Windows PowerShell。右键“开始”按钮→选择“Windows PowerShell(管理员)”。
第二步:执行策略授权(仅首次运行需操作)。输入命令:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,按回车确认。不执行这步,脚本会被系统拦截。
第三步:进入图片所在文件夹。例如图片在D:\photos,就输入:cd "D:\photos"(注意英文引号不能省)。
第四步:运行转换命令。将所有JPG转为PNG,粘贴并回车:
$files = Get-ChildItem *.jpg; foreach ($file in $files) { $img = [System.Drawing.Image]::FromFile($file.FullName); $newPath = [System.IO.Path]::ChangeExtension($file.FullName, ".png"); $img.Save($newPath, [System.Drawing.Imaging.ImageFormat]::Png); $img.Dispose() }
第五步:如需转HEIC为JPG,先确保已安装HEVC视频扩展(微软商店免费下载),再运行对应脚本。该方法不修改原文件,新生成的.png或.jpg与原图同名同目录并存,可放心操作。
用批处理文件快速改后缀(仅限简单格式)
适用于JPG↔JPEG、BMP↔DIB这类编码结构完全一致的格式互换,或者你只是临时应付一个只要求扩展名正确的上传界面。它不转编码,只重命名,速度极快但打不开就是打不开。
方法一:基础版(适合JPG改JPEG或反之)
在图片文件夹中右键→新建→文本文档→打开→粘贴:ren *.jpg *.jpeg→保存→把文件名从“新建文本文档.txt”改为“convert.bat”→双击运行。
方法二:增强版(带循环防错,适合多批次操作)
同样新建文本文档,粘贴以下三行:
@echo off
for %%f in (*.png) do (ren "%%f" "%%~nf.jpg")
pause
保存为.bat后双击,所有.png会变成.jpg,但实际仍是PNG编码——这点务必心里有数。
注意:如果原图是HEIC、WebP或含透明通道的PNG,用此法改成.jpg后双击必然报错“无法在此设备上打开”,因为Windows根本没加载对应解码器。
用系统自带“照片”应用半自动处理(适合10张以内)
当只有几张图要转,又不想开终端时,这个方法最直观。它走的是系统原生图像IO栈,兼容性比画图更稳,支持HEIC(需已装HEVC扩展)、JPG、PNG、GIF、BMP五种格式互相另存。
打开“照片”应用:任务栏搜索框输入Photos→回车→点击左上角“导入”→选择“从文件夹导入”→定位到你的图片文件夹→全选→导入。
导入完成后,在左侧“相册”里点刚建的相册→右键第一张图→“在画图中编辑”→“文件”→“另存为”→下拉菜单选“JPEG图片”或“PNG图片”→保存→关闭画图→重复右键下一张。
这个流程看似手动,但配合键盘快捷键能提速:画图中按Ctrl+S保存→Alt+F4关闭→回到照片应用直接空格预览下一张→右键→重复。每张耗时约8秒,10张不到2分钟。
注册表集成右键菜单(高频用户首选)
一旦配置完成,今后在任意文件夹中选中多张JPG,右键就有“批量转为PNG”选项,点击即执行PowerShell真转换,全程无弹窗、不跳终端、结果实时可见。
第一步:新建文本文件,粘贴以下完整注册表内容(复制时勿漏空行):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\ConvertJPGtoPNG]
@="批量转为PNG"
"Icon"="imageres.dll,-5601"
[HKEY_CLASSES_ROOT\Directory\Background\shell\ConvertJPGtoPNG\command]
@="powershell -NoProfile -ExecutionPolicy Bypass -Command \"$files = Get-ChildItem '%V' -Filter '*.jpg'; foreach ($f in $files) { $i = [System.Drawing.Image]::FromFile($f.FullName); $p = [System.IO.Path]::ChangeExtension($f.FullName, '.png'); $i.Save($p, [System.Drawing.Imaging.ImageFormat]::Png); $i.Dispose() }\""
第二步:将文件保存为ConvertToPNG.reg,双击运行→点击“是”导入注册表。
第三步:前往任意含JPG图片的文件夹,空白处右键→看到“批量转为PNG”即成功。该功能只对当前文件夹内选中的.jpg文件生效,不会误触子文件夹或其它格式。











