Мне нужно создать миниатюру для всех изображений в папке, как это (пример)
Исходное изображение:
Что я хочу:
Я пробовал эту команду
mogrify *.jpg -gravity center -thumbnail 350x200 *.jpg
Что я получаю с этой командой:
Платформа - Windows 7.
Мне нужно создать миниатюру для всех изображений в папке, как это (пример)
Исходное изображение:
Что я хочу:
Я пробовал эту команду
mogrify *.jpg -gravity center -thumbnail 350x200 *.jpg
Что я получаю с этой командой:
Платформа - Windows 7.
Миниатюра - это небольшая версия графика.
Вы, кажется, хотите обрезанный фрагмент оригинала, а не миниатюру. Итак, вы используете неправильную команду. :)
Вы захотите изменить размер изображения до одного из ваших желаемых размеров, а затем использовать команду (и) обрезки, чтобы сделать копию нужного вам раздела.
Вы хотите обрезать и изменить размер изображения:
mogrify -crop 800x520+0+300 -resize 320x200 *.jpg
И да, поскольку ваши изображения отличаются, возможно, вам придется настроить параметры кадрирования для каждого изображения. С помощью некоторых сценариев вы можете программно настроить эти параметры, например, создав сценарий bash cut-resize.sh
как показано ниже, и запустив его с аргументом имени файла, поэтому cut-resize.sh testimage.jpg
:
#!/bin/bash
origX=`identify $1 | cut -d' ' -f3 | cut -dx -f1`
origY=`identify $1 | cut -d' ' -f3 | cut -dx -f2`
offset=300
eval "mogrify -crop ${origX}x$(($origY/2))+0+$offset -resize 320x200 $1"
Будет делать почти то же самое - вырезать средние 50% изображения, а затем изменить его размер для любого размера изображения. Вы можете добавить дополнительные аргументы и переменные, чтобы указать смещение и сумму обрезки, но пусть ваш скрипт позаботится о настройке геометрии для imagemagick.
Или на Windows, следующий пакетный пример может работать, я понятия не имею, у меня есть только окно Linux, но дело в том, что вы можете написать скрипт для настройки переменных:
file=%1
rem identify %file% | cut -d' ' -f3 | cut -dx -f1
for /f "tokens=3" %%G IN ('identify %file%') DO set temp=%%G
for /f "tokens=1" "delims=x" %%G IN ("%temp%") DO set oldx=%%G
for /f "tokens=2" "delims=x" %%G IN ("%temp%") DO set oldy=%%G
offset=300
newx=%oldx%
newy=%oldy%/2
mogrify -crop %newx%x%newy%+0+%offset% -resize 320x200 %file%
Хорошим справочником по пакетным, bash или сценариям powershell является http://ss64.com/. Сочетание сценариев с Imagemagick очень эффективно, когда вы создаете свои рабочие процессы и сценарии.