Powershell脚本将TIFF图像转换为重命名的JPEG

时间:2017-02-09 04:19:05

标签: image powershell imagemagick

我需要将批量的TIFF图像转换为JPEG。可以使用普通的PowerShell来完成,而无需安装ImageMagick吗?

经过一些研究herehere后,似乎可以做到。首先,通过加载.NET Framework程序集:

[Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”);

但是,由于我将转换后的图像保存在不同的目录中,删除文件名的前四个字符,并将扩展名更改为jpg,我仍然坚持语法:

Get-ChildItem *.tif | %{ $file = new-object System.Drawing.Bitmap($_.FullName); $file.Save({ Join-Path "C:\Users\oscar\Downloads\" ($_.Name -replace '^.{4}(.*?)', '$1.jpg') },"JPEG") }

我在路径名中收到了#34;无效字符"错误。

2 个答案:

答案 0 :(得分:0)

我不确定您的问题是在转换中还是创建新文件名。如果文件名创建是问题,您可以尝试以下。例如:

PS C:\temp> "test.txt" -replace "txt", "somethingOther"

在你的情况下:

Get-ChildItem -Include *.tif | %{ $file = new-object System.Drawing.Bitmap($_.FullName); $file.Save(( Join-Path "C:\Users\oscar\Downloads\" ($_.Name -replace "tif", 'jpg') ),"JPEG") }

我还用正常的(Join-Path)替换了大括号。

希望有所帮助

答案 1 :(得分:0)

在解释事情时,我不喜欢一个衬垫 此脚本包含新文件名所需的.substring(4)

[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$DestDir = "C:\Users\oscar\Downloads\"
$SrcDir  = "X:\test\path"
PushD $SrcDir
Get-ChildItem *.tif | 
  ForEach-Object{
    $NewFileName = ( Join-Path $DestDir ($_.BaseName.SubString(4)+'.jpg' ))
    $Picture = new-object System.Drawing.Bitmap($_.FullName)
    $Picture.Save($NewFileName ,"JPEG") 
  }
PopD