9

Альтернативный вариант: как взять неквадратный 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 ответа3

7

Эта команда возьмет любой размер входного файла и поместит его лучше всего в квадрат 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

5

Одна команда для преобразования всех PNG из одной папки:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png

mogrify - это команда из пакета ImageMagick. Сначала вы должны создать выходной каталог.

1

Вот то, что я в конечном итоге пошел с. Двухэтапный процесс:

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 - это белые пиксели для того, что я хотел сохранить, и прозрачные пиксели для того, что я хотел скрыть (отбросить).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .