У меня есть исходное изображение (скажем, 1600x1200), для которого я хочу создать серию эскизов с различными разрешениями:
Индивидуально, я могу обрабатывать каждое из этих преобразований с помощью команды convert
. Проблема в том, что постоянная повторная инициализация convert
- огромная трата ресурсов; было бы лучше связать вещи так, чтобы convert
мог повторно использовать свою работу.
Используя ImageMagick 6.7.0-10 Я пробовал следующее (используя параметр + write
, см. http://www.imagemagick.org/script/command-line-options.php#write ), но это не работает, поскольку команда + запись
выглядит как неэффективны при восстановлении изображения в исходное состояние:
convert '/tmp/original.jpg'[0] -quality 95 -de density 72x72 -resample 72x72 + profile'! xmp, * '-resize' 900> '+ write '/tmp/900.jpg' -resize '700>' + write '/tmp/700.jpg' -resize '200x' -crop '200x200 + 0 + 35' + repage + write '/tmp/200.jpg' -resize 'x550>' + write '/tmp/550.jpg' -resize 'x400>' + write '/tmp/400.jpg' -resize 'x150>' '/tmp/150.jpg'[12186hibited Альтернативно , Я попробовал следующее (используя
+ clone
и -delete
). Кажется, это работает, но, вероятно, его можно было бы сделать более эффективным (возможно, с помощью mpr:
, http://www.imagemagick.org/Usage/files/#mpr ):
convert 'original.jpg' [0] -quality 95 -de density 72x72 -resample 72x72 + profile '! xmp, *' \ (+ clone -resize 'x150>' -write '150.jpg' \) -delete 1 \ (+ clone -resize 'x400>' -write '400.jpg' \) -delete 1 \ (+ clone -resize 'x550>' -write '550.jpg' \) -delete 1 \ (+ clone -resize ' 200x '-crop' 200x200 + 0 + 35 '+ repage -write' 200.jpg '\) -delete 1 \ (+ clone -resize' 700> '-write' 700.jpg '\) -delete 1 -resize' 900> '' 900.jpg '
Кто-нибудь может объяснить, что я делаю не так в первом примере (с помощью команды + write
)? Кроме того, может ли кто-нибудь предложить какие-либо улучшения для повышения эффективности использования ЦП / памяти?
РЕДАКТИРОВАТЬ
Вот улучшение с использованием mpr:
convert 'original.jpg' [0] -quality 95-density 72x72 -resample 72x72 + profile '! xmp, *' -write mpr: orig + delete mpr: orig -resize 'x150>' -write '150.jpg' + delete mpr: orig -resize 'x400>' -write '400. jpg '+ delete mpr: orig -resize' x550> '-write' 550.jpg '+ delete mpr: orig -resize' 200x '-crop' 200x200 + 0 + 35 '+ repage -write' 200.jpg '+ delete mpr: orig -resize '700>' -write '700.jpg' + delete mpr: orig -resize '900>' 900.jpg '
Мне все еще любопытно, почему + write
не не работает.