Как запустить команду преобразования изображения магии - PullRequest
0 голосов
/ 03 июля 2018

Я выполняю команду преобразования Image Magick с синтаксисом:

magick convert -units pixelsperinch image2.jpg -density 600 out.png

Но не получаю никаких результатов. Как мы можем выполнить команду конвертирования, не используя магию.

1 Ответ

0 голосов
/ 03 июля 2018

Если вы хотите установить значение в файле, вам нужно использовать -set:

convert image2.jpg -set density 600 -set units pixelsperinch out.png

Теперь проверьте, что мы получили:

identify -verbose out.png | grep -Ei "units|resolution"
Resolution: 236.22x236.22
Units: PixelsPerCentimeter
  png:pHYs: x_res=23622, y_res=23622, units=1

Я не уверен, что знаю хороший способ объяснить, когда вам нужно -set, а когда нет. Я попробую, и если кто-нибудь сможет это улучшить, я напишу улучшения.

Давайте рассмотрим пример, подобный -size. Это «настройка» , что означает, что он просто изменяет и запоминает внутреннюю настройку или значение до тех пор, пока конец команды или значение не будет установлено по-другому, но это не изменит существующие изображения. Итак, если я сделаю:

convert -size 1024x768 ...

он устанавливает размер и запоминает его, и если я впоследствии буду использовать xc:blue или подобное, холст будет создан с таким размером, как вы ожидаете.

Если, однако, я делаю:

convert -size 1024x768 xc:blue ... -size 10x10 ...

-size 10x10 на самом деле не меняет размер уже существующего 1024x768 синего холста, он просто помнит, что любые холсты, созданные в будущем, должны быть 10x10.

Итак, -density и -units работают как настройки, как указано выше.

Теперь давайте посмотрим на -set. Это «оператор» , в отличие от «настройка» . Когда вы используете «оператор» , эта операция будет применена немедленно ко всем загруженным в настоящее время изображениям и потенциально изменит все загруженные в настоящее время изображения. Итак, -resize - это еще один пример «оператора» . Когда вы используете его, он сразу же изменит размер всех загруженных изображений.

Итак, если я сделаю это:

convert image1.jpg image2.jpg -resize 800x600 image3.jpg ...

немедленно изменит размеры image1.jpg и image2.jpg до 800x600, но не изменит image3.jpg.


Теперь, когда учебник закончен, можно надеяться, что вы хотите изменить / изменить загруженное изображение, поэтому вам нужно использовать «оператор» вместо «настройки» .

...