通过PowerShell将图像和文件所有者拉到ImageMagick'Montage'

时间:2017-11-13 22:16:33

标签: powershell imagemagick imagemagick-montage

我正在尝试构建一个PowerShell脚本,它将递归地从特定目录中提取jpgs并通过ImageMagick montage运行它们以创建一个文件名作为标签的联系表。截至目前,我的$filename代码已损坏,因为它只为所有具有相同文件名的图像提供了最后一个文件的名称和标签。

目前我有:

foreach ($dailyPhotoBay in $dailyServerPath)
{
$dailyImage = Get-ChildItem -Path $dailyPhotoBay -Include *.jpg -Recurse | Where-Object {$_.PSParentPath -like "*Output*"}

foreach ($image in $dailyImage)
{
    $fileName = [System.IO.Path]::GetFileNameWithoutExtension($dailyImage)
    }
    echo $fileName

    montage -verbose -label $fileName -pointsize 20 -background '#FFFFFF' -tile '5x40' -fill 'black' -define jpeg:size=600x780 -geometry 600x780+40+150 -quality 90  -auto-orient $dailyImage.FullName D:\Contact_Sheet\Sheet.jpg
}

使用此代码,所有图像都被拉出,联系表看起来正确,除了所有图像都标记相同 - 最后一张图像的名称。

与往常一样,任何帮助都表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:1)

在ImageMagick中,使用%f显示带有后缀蒙太奇或%t的文件名以显示文件名(不带后缀)。 ImageMagick应该剥离路径。因此,创建一个变量$ filenames,其中包含具有不同names.suffix的文件列表,包含或不包含路径。

例如:

convert logo: /Users/fred/desktop/logo.png

获取filename.suffx:

montage -label "%f" /Users/fred/desktop/logo.png montage1.png

enter image description here

或者只获取没有后缀的文件名

montage -label "%t" /Users/fred/desktop/logo.png montage2.png

enter image description here

因此,对于你的蒙太奇,如果你想要带有后缀的文件名显示:

,请执行以下操作
montage -verbose -label "%f" -pointsize 20 -background '#FFFFFF' -tile '5x40' -fill 'black' -define jpeg:size=600x780 -geometry 600x780+40+150 -quality 90  -auto-orient $dailyImage D:\Contact_Sheet\Sheet.jpg


如果你想要没有后缀的文件名,请执行以下操作:

montage -verbose -label "%t" -pointsize 20 -background '#FFFFFF' -tile '5x40' -fill 'black' -define jpeg:size=600x780 -geometry 600x780+40+150 -quality 90  -auto-orient $dailyImage D:\Contact_Sheet\Sheet.jpg


对不起,我不知道PowerShell。所以我不能告诉你如何从你的目录中获取文件名列表。

请参阅 http://www.imagemagick.org/script/escape.php http://www.imagemagick.org/Usage/montage/#label