¿Qué parámetros necesita "convertir" (?) Para obtener esta SALIDA de esta ENTRADA?
ENTRADA:
SALIDA:
¿Qué parámetros necesita "convertir" (?) Para obtener esta SALIDA de esta ENTRADA?
ENTRADA:
SALIDA:
Respuestas:
Como no quería que las imágenes se alinearan con el lado derecho, tuve que usar un enfoque diferente ( composite
herramienta de ImageMagick ):
convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png
-size
debe ser el tamaño de imagen final que desee, canvas.png
es un lienzo blanco en blanco, in.png
sería la imagen que desea rellenar y -geometry
es el desplazamiento de posicionamiento.
Mi versión de ImageMagick es '6.7.8-0 2012-07-04 Q16'. De acuerdo con el documento, la respuesta del comando @kev debería funcionar:
convert in.png -gravity east -extent 520x352 out.png
Sin embargo, como con la mayoría de las preguntas de ImageMagick, puede lograr el mismo objetivo con diferentes medios. Podrías usar montage
así:
montage null: in.png -tile 2x1 -geometry +17+0 out1.png
Esto usa la imagen especial 'null:' para concatenarla con el in.png
.
Es cierto que convert
necesita volver a calcular los valores a los que debe pasar -extent
para cada imagen de entrada que tenga un tamaño diferente.
Primer uso identify -format
para obtener las dimensiones de la imagen:
identify -format '%Wx%H' in.png
Esto debería devolver algo como:
449x352
Ok, ahora necesitarías agregar tus 71 píxeles deseados, para obtener el 520x352
valor final . Pero no necesita hacer ese cálculo en sus propios cerebros:
ImageMagick al rescate !, y sus capacidades de cálculo mágico ... :-)
Puede indicarle al identify -format
comando que haga ese cálculo por usted:
identify -format '%[fx:W+71]x%H'
Esto debería darte un resultado de:
520x352
Asumiendo que solo desea rellenar / agregar una 'franja blanca' de 71 píxeles de ancho a la izquierda de cualquier imagen, puede usar la siguiente línea de comando:
convert \
in.png \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' in.png) \
out2.png
Voila! Una línea de comando (que encapsula 2 comandos, para ser honesto) y puede dejar que este se suelte en todos sus PNG, JPEG, GIF, ... en un directorio para agregar automáticamente su tira blanca de 71 píxeles a cada uno de ellos:
for i in *.png *.jpeg *jpg *.gif; do
convert \
${i} \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' ${i}) \
$(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
done
Para cada imagen, su salida sigue siendo el mismo tipo de archivo. Por supuesto, puede exigir que todos los resultados sean PNG (o lo que desee). Simplemente reemplace la %t.%e
parte del comando con %t.png
...
Documentación: http://www.imagemagick.org/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
. +1 para la 'dirección correcta' aunque
-background transparent
para preservar un fondo transparente.
Tengo este comando definido en mi .bash_profile
. Calculará automáticamente el tamaño de la imagen final a partir del relleno que desee en ancho y alto (funciona con ceros):
# arithmetic with awk
calc() { awk "BEGIN { print $* }"; }
# pad an image
img_pad() {
local width height pw ph
[ $# -lt 3 ] && { echo "Usage: img_pad <Input> <WxH> <Output>"; return; }
# parse current size and padding
IFS=x read width height <<< "$(identify "$1" | awk '{print $3}')"
IFS=x read pw ph <<< "$2"
# new widht and height
width=$(calc "$width + 2*$pw")
height=$(calc "$height + 2*$ph")
echo "Converting '$1' to '$3' with size ${width}x${height} (+w=${pw}, +h=${ph})."
convert "$1" -gravity center -extent "${width}x${height}" "$3"
}
Ejemplo de uso:
# pad 50px left and right, no vertical padding
img_pad in.png 50x0 out.png