用 PowerShell 和 System.Drawing 转换图片格式
借助 .NET 内置图像库在 PNG、JPEG、BMP 等格式间自由转换,可批量脚本化,无需安装任何软件。
在 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风险
!注意: 忘记调用 Dispose() 会让文件句柄一直被占用,后续重命名或删除都会报「文件正在使用」——处理完立即释放。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- System.Drawing.Bitmap class | Microsoft Learn依据: Microsoft documents the System.Drawing Bitmap class and its Save method for writing images in formats such as JPEG, PNG and BMP.
最后验证: 2026-09-17 · 分类: 媒体