2011-03-28 5 views
3

J'utilise la commande composite d'ImageMagick pour composer une image plus petite sur une image plus grande. L'image résultante doit être de la taille de l'image d'arrière-plan (la plus grande). De plus, je veux que le plus petit soit toujours de la même taille.ImageMagick composite redimensionne l'image avant de composer

Actuellement, j'ai si simple invocation:

composite -gravity SouthWest watermark.png photo.jpg photo.jpg 

Le problème est que je reçois différentes tailles de filigrane pour différentes photos et je ne sais pas comment le configurer pour être de taille fixe. J'ai essayé les options -resize, -geometry et -size mais toutes changent la taille de l'image résultante et non le filigrane.

Répondre

5

J'ai eu un problème similaire et essayé toutes sortes d'options différentes avec la commande composite pour essayer de le faire fonctionner. Finalement, je devais passer à l'aide de la commande convert et a été en mesure d'obtenir à redimensionne avec gravité en utilisant:

convert photo.jpg -gravity SouthWest -draw "image Over 0,0,200,200 watermark.png" photo.jpg 

Les paramètres numériques pour -draw sont à gauche, haut, largeur, hauteur. Voir http://www.imagemagick.org/script/command-line-options.php?#draw. Cette solution n'utilise donc plus la commande composite mais, espérons-le, vous donne ce que vous voulez.

0

Hurraaay!

J'ai trouvé la réponse d'une petite note dans le manuel ImageMagick qui dit -resize '1x1<' est essentiellement un no-op (et SHORT-CIRCUIT) pour l'opération de redimensionnement.

Donc, si j'ai un image.jpg de 1200x1200 et je superposition avec un 600x600 copyright.png, en utilisant cette commande:

composite -dissolve 50% -gravity center image.jpg copyright.png result.jpg 

mon image se redimensionnée à 600x600 selon le copyright.png.

Cependant, si je fais ce qui suit:

composite -resize '1x1<' -dissolve 50% -gravity center image.jpg copyright.png result.jpg 

mon image de sortie conserve sa taille de 1200x1200 orginal.