我正在尝试批量将一些透明的png图片转换为jpg格式,下面这个拼凑出来的powershell代码可以工作,但是每次转换之后所有的图片都变成了黑色。我尝试了这里的答案Convert Transparent PNG to JPG with Non-Black Background Color,但是我得到了“using”关键字不受支持的提示(在模块中也找不到它)。
$files = Get-ChildItem "C:\Pictures\test" -Filter *.png -file -Recurse |
foreach-object {
$Source = $_.FullName
$test = [System.IO.Path]::GetDirectoryName($source)
$base= $_.BaseName+".jpg"
$basedir = $test+"\"+$base
Write-Host $basedir
Add-Type -AssemblyName system.drawing
$imageFormat = "System.Drawing.Imaging.ImageFormat" -as [type]
$image = [drawing.image]::FromFile($Source)
$image.Save($basedir, $imageFormat::jpeg)
}
据我理解,您需要创建一个带有白色背景的新位图图形,并在其上绘制此图像,但是我无法弄清楚如何添加它。
using
语句来保证对象的释放,这就是为什么你会得到那个语法错误的原因。请参见如何在PowerShell中实现using语句?。 - Lance U. Matthews