with create convert graphics image image-manipulation imagemagick

graphics - create - imagemagick convert



Reflexión de ImageMagick (3)

Breve:

convert ( -size 585x128 gradient: ) NewImage.png

¿Cómo cambio el comando ImageMagick anterior para que tome el ancho y el alto de una imagen existente? Necesito que siga siendo un comando de una línea.

Detalles:

Estoy tratando de crear programáticamente una imagen de reflexión usando ImageMagick. El efecto que estoy buscando es similar a lo que verías al mirar un objeto en el borde de un charco de agua. Hay un hilo bastante bueno sobre lo que estoy tratando de hacer aquí, pero la solución no es exactamente lo que estoy buscando. Como llamaré a ImageMagick desde una aplicación C # .Net, quiero usar una llamada sin ningún archivo temporal y devolver la imagen a través de stdout. Hasta ahora tengo esto ...

convert OriginalImage.png ( OriginalImage.png -flip -blur 3x5 / -crop 100%%x30%%+0+0 -negate -evaluate multiply 0.3 / -negate ( -size 585x128 gradient: ) +matte -compose copy_opacity -composite ) -append NewImage.png

Esto funciona bien, pero no me da el fundido exacto que estoy buscando. En lugar de un buen fundido sólido de arriba a abajo, me está dando un desvanecimiento desde la parte superior izquierda a la inferior derecha. Agregué la sección (-negativo -evaluar multiplique 0.3 -negado) para aclararlo un poco más ya que no estaba obteniendo el fundido que quería. Tampoco quiero tener que codificar el tamaño de la imagen al crear el degradado (gradiente de tamaño 585x128). También voy a querer mantener la transparencia de la imagen original si es posible.

Para ir a stdout, planeo reemplazar "NewImage.png" con "-"


Si lo está llamando desde C #, quizás pueda obtener las dimensiones de la imagen en C #. A continuación, llame al comando ImageMagick con

command = String.Format("convert bar %1x%2",img.Width,img.Height)


Debe tomar la imagen existente como entrada, y crear el degradado usando -fx en lugar de usar el pseudo-formato de degradado.


Puede ser que esto pueda ayudar: Reflexión bajo una imagen

#!/bin/sh gamma=$1 source=$2 destination=$3 size=`identify -format "%wx%h" $source` convert $source / /( -size $size xc:none / /( /( -flip $source -crop $size+0+0 /) / -size $size gradient: -gamma $gamma / -compose copy_opacity -composite /) / -compose blend -composite /) / -append $destination