Подтвердить что ты не робот

ImageMagick удлиняет холст с прозрачным фоном

convert input.png -extent 100x100 -gravity center -background white output.png

Если вход 50x50, окружающий фон белый. Могу ли я как-то настроить прозрачность, не объявляя какой-либо цвет в качестве прозрачного?

4b9b3361

Ответ 1

Используйте это вместо:

convert               \
      input.png       \
     -background none \
     -gravity center  \
     -extent 100x100  \
      output.png

Хорошо заметьте: Этот порядок параметров значителен! (Чтобы убедить себя, просто положите -background none в конце параметров вместо начала...)


Обновлено: Спасибо @jesmith, который заметил, что изначально предоставленная мне командная строка больше не работает так, как предполагалось. Более поздние версии convert дополнительно требуют, чтобы -gravity center вызывался до -extent 100x100. (Это было одним из изменений, внесенных в один из последних версий ImageMagick [во время первоначального написания этого ответа]).

Ответ 2

Замечание Курта иронично видно, порядок очень важен. Команда Kurt приводит к тому, что gravity не применяется к extent, поэтому прозрачная "граница" будет находиться в нижней и/или правой части изображения.

Перемещение gravity до extent будет корректно создавать равные прозрачные "границы" на всех применимых сторонах.

convert input.jpg -background none -gravity Center -extent 100x50 output.png