Извлечение изображений и владельца файла через PowerShell в 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 ответ

Решение

В ImageMagick используйте%f, чтобы показать имя файла с суффиксом в монтаже, или%t, чтобы показать имя файла (без суффикса). ImageMagick должен раздеть пути. Поэтому создайте переменную $filenames, которая содержит список файлов с разными names.suffix с или без путей.

Например:

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

Чтобы получить имя файла.suffx:

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

Или получить только имя файла без суффикса

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

Поэтому для вашего монтажа сделайте следующее, если вы хотите, чтобы имя файла с суффиксом отображалось:

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/

Другие вопросы по тегам