Como eu mudo o tamanho da tela de um PNG com o ImageMagick (GraphicsMagick)? (Como pad com transparência?)

9

Alternativamente: Como eu pego um PNG não quadrado e "preencho" o "resto" da imagem com transparência para que a imagem quadrada resultante tenha a imagem original centralizada no quadrado?

FINALMENTE, o que eu quero é tirar qualquer imagem de qualquer formato suportado por GM de qualquer tamanho, e criar um PNG reduzido (digamos, 40 pixels no máximo para qualquer dimensão), com proporção mantida, transparência para imagens originais não quadradas, E com uma máscara de transparência PNG 40x40 já preparada aplicada.

Eu já sei como reduzir a escala e manter a proporção; Eu já tenho o comando para aplicar meu composto. Minha única peça que falta é imagens não quadradas de tamanho quadrado (preenchimento com transparência).

Comando único preferido; cadeia multi-comando aceitável.

(editar)

Informação extra: aqui está o comando composto que estou usando:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png

onde mask.png tem pixels brancos para o que eu quero manter de source-and-target.png e pixels transparentes para o que eu quero remover (e tornar-se transparente) de source-and-target.png.

    
por Pistos 24.04.2012 / 00:44

3 respostas

7

Este comando irá pegar qualquer arquivo de entrada de tamanho e encaixar melhor em um quadrado de 40x40 e passar com transparência:

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png

A opção gravity garante que a imagem esteja centralizada nas duas direções e transparent seja usado onde quer que não haja pixels. Então a composição é feita com o mask.png

    
por 24.04.2012 / 02:06
5

Um comando para converter todos os PNGs de uma pasta:

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

mogrify é um comando do pacote ImageMagick. Você precisa criar o diretório de saída primeiro.

    
por 13.11.2012 / 11:52
1

Aqui está o que eu eventualmente fui. Um processo de dois passos:

gm convert \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
   original.png \
   intermediate.png

gm composite \
  -compose in \
   intermediate.png \
   mask.png \
   out.png

Onde mask.png é pixels brancos para o que eu queria manter, e pixels transparentes para o que eu queria mascarar (descartar).

    
por 24.04.2012 / 06:28