Graphics 镜像反射

Graphics 镜像反射,graphics,image,image-manipulation,imagemagick,Graphics,Image,Image Manipulation,Imagemagick,简介: 如何更改上面的ImageMagick命令,使其从现有图像获取宽度和高度?我需要它保持一行命令 详情: 我正在尝试使用ImageMagick以编程方式创建图像反射。我所寻找的效果与你在水池边观察物体时看到的效果相似。有一个很好的线程关于我正在尝试做什么,但解决方案并不完全是我所寻找的。由于我将从C#.Net应用程序调用ImageMagick,因此我希望使用一个不带任何临时文件的调用,并通过标准输出返回图像。到目前为止我有这个 convert ( -size 585x128 gradien

简介:

如何更改上面的ImageMagick命令,使其从现有图像获取宽度和高度?我需要它保持一行命令


详情:

我正在尝试使用ImageMagick以编程方式创建图像反射。我所寻找的效果与你在水池边观察物体时看到的效果相似。有一个很好的线程关于我正在尝试做什么,但解决方案并不完全是我所寻找的。由于我将从C#.Net应用程序调用ImageMagick,因此我希望使用一个不带任何临时文件的调用,并通过标准输出返回图像。到目前为止我有这个

convert ( -size 585x128 gradient: )  NewImage.png
这工作正常,但没有给我的确切褪色我正在寻找。而不是一个很好的固体淡入淡出从上到下,这是给我一个淡入淡出从左上到右下。我添加了(-negate-evaluate multiply 0.3-negate)部分,以使它更亮一些,因为我没有得到我想要的淡入度。我也不想在创建渐变时硬编码图像的大小(-size 585x128 gradient:),如果可能的话,我还想保持原始图像的透明度


要转到标准输出,我计划将“NewImage.png”替换为“-”

如果您是从C#调用它,也许您可以在C#中检索图像维度。 然后使用调用ImageMagick命令

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

您应该将现有图像作为输入,自己使用-fx创建渐变,而不是使用渐变伪格式。

这可能会有帮助:


我今晚到家后可以回答这个问题。评论,以便我可以在我的用户页面上再次找到问题。我没有将此放在回答中,因为它没有直接解决您表达的约束,但我认为这是有用的信息(特别是在*nix环境中):仅供参考,下面是一个PHP脚本,它利用GD库来完成我认为您想要做的事情:我不想单独调用来获取图像大小。由于ImageMagick将加载图像,我希望能够重用大小信息。
command = String.Format("convert bar %1x%2",img.Width,img.Height)
#!/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