Если вы хотите установить значение в файле, вам нужно использовать -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
.
Теперь, когда учебник закончен, можно надеяться, что вы хотите изменить / изменить загруженное изображение, поэтому вам нужно использовать «оператор» вместо «настройки» .