Как изменить размер холста PNG с помощью ImageMagick (GraphicsMagick)? (Как дополнить прозрачностью?)
Альтернативный вариант: как взять неквадратный PNG и "заполнить" "остаток" изображения прозрачностью, чтобы полученное квадратное изображение имело исходное изображение по центру квадрата?
В конечном счете, я хочу взять любое изображение любого формата, поддерживаемого GM, любого размера и создать уменьшенный PNG (скажем, максимум 40 пикселей для любого измерения), с сохранением соотношения сторон, с прозрачностью для неквадратного исходные изображения И с уже подготовленной маской прозрачности PNG 40x40.
Я уже знаю, как уменьшить и сохранить соотношение сторон; У меня уже есть команда для применения моего композита. Моя единственная недостающая часть - это квадратичные неквадратные изображения (заполнение с прозрачностью).
Отдельная команда предпочтительна; многокомандная цепочка приемлема.
(редактировать)
Дополнительная информация: Вот составная команда, которую я использую:
gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png
где mask.png имеет белые пиксели для того, что я хочу сохранить от source-and-target.png, и прозрачные пиксели для того, что я хочу удалить (и стать прозрачным) из source-and-target.png.
3 ответа
Эта команда возьмет любой размер файла ввода и поместит его наилучшим образом в квадрат 40x40 и площадку с прозрачностью:
convert \
original.png \
-thumbnail '40x40>' \
-background transparent \
-gravity center \
-extent 40x40 \
-compose Copy_Opacity \
-composite mask.png \
original-resized.png
gravity
опция обеспечивает центрирование изображения в обоих направлениях и transparent
используется везде, где нет пикселей. Затем композитинг делается с mask.png
Одна команда для преобразования всех PNG из одной папки:
mogrify \
-resize 50x50 \
-background transparent \
-gravity center \
-extent 50x50 \
-format png \
-path resized \
*.png
mogrify - это команда из пакета ImageMagick. Сначала вы должны создать выходной каталог.
Вот то, что я в конце концов пошел с. Двухэтапный процесс:
gm convert \
-thumbnail '40x40>' \
-background transparent \
-gravity center \
-extent 40x40 \
original.png \
intermediate.png
gm composite \
-compose in \
intermediate.png \
mask.png \
out.png
Где mask.png - это белые пиксели для того, что я хотел сохранить, и прозрачные пиксели для того, что я хотел замаскировать (отбросить).