用 PowerShell 和 System.Drawing 转换图片格式

借助 .NET 内置图像库在 PNG、JPEG、BMP 等格式间自由转换,可批量脚本化,无需安装任何软件。

Windows文件开发媒体低风险
在 Windows PowerShell 中运行上面的 FromFile/Save 代码,把 `[System.Drawing.Imaging.ImageFormat]::Jpeg` 按需换成 `::Png`、`::Bmp`、`::Gif` 或 `::Icon` 即可。

01命令

命令
$ Add-Type -AssemblyName System.Drawing; $img=[System.Drawing.Image]::FromFile("C:\pics\photo.png"); $img.Save("C:\pics\photo.jpg",[System.Drawing.Imaging.ImageFormat]::Jpeg); $img.Dispose()

02作用说明

System.Drawing 的 Image 类负责解码源文件,Bitmap.Save 按指定的 ImageFormat 重新编码,全程在 PowerShell 内完成、零安装。批量转换套一层循环:`Get-ChildItem *.png | ForEach-Object { $i=[System.Drawing.Image]::FromFile($_.FullName); $i.Save(($_.FullName -replace '\.png$','.jpg'),[System.Drawing.Imaging.ImageFormat]::Jpeg); $i.Dispose() }`——务必 Dispose 释放文件句柄。注意格式取舍:PNG 转 JPEG 会把透明通道压成黑色或指定背景色,JPEG 属于有损压缩;在意文件体积时需通过 EncoderParameters 对象设置 JPEG 质量。此方法只能在 Windows PowerShell 5.1 下运行,新版 .NET 已限制 System.Drawing.Common 的使用。

03风险

风险低风险
使用条件Windows PowerShell 5.1 (System.Drawing is not available in PowerShell 7+ on some .NET runtimes); JPEG has no transparency, so PNGs with alpha may gain a black background.
!注意: 忘记调用 Dispose() 会让文件句柄一直被占用,后续重命名或删除都会报「文件正在使用」——处理完立即释放。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

最后验证: 2026-09-17 · 分类: 媒体

06相关方案