5

簡単に:

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

上記の ImageMagick コマンドを変更して、既存の画像から幅と高さを取得するにはどうすればよいですか? 1行のコマンドのままにする必要があります。


詳細:

ImageMagick を使用してプログラムでイメージの反射を作成しようとしています。私が探している効果は、水たまりの端にある物体を見たときに見えるものに似ています。ここでやろうとしていることについてはかなり良いスレッドがありますが、解決策はまさに私が探しているものではありません。C#.Net アプリケーションから ImageMagick を呼び出すので、一時ファイルを使用せずに 1 つの呼び出しを使用し、stdout を介してイメージを返します。これまでのところ、私はこれを持っています...

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

これは問題なく機能しますが、探している正確なフェードが得られません。上から下へのしっかりしたフェードの代わりに、左上から右下へのフェードを与えています。(-negate -evaluate 乗算 0.3 -negate) セクションを追加して、必要なフェードが得られなかったので、もう少し明るくしました。また、グラデーションを作成するときに画像のサイズをハードコーディングする必要もありません ( -size 585x128 gradient: ) また、可能であれば元の画像の透明度を維持したいと考えています。

stdout に移動するには、「NewImage.png」を「-」に置き換える予定です。

4

3 に答える 3

1

C# から呼び出している場合は、C# で画像のサイズを取得できる可能性があります。次に、ImageMagick コマンドを呼び出します。

command = String.Format("convert bar %1x%2",img.Width,img.Height)
于 2008-10-15T16:24:11.053 に答える
0

入力として既存の画像を取得し、グラデーション疑似形式を使用する代わりに -fx を使用して自分でグラデーションを作成する必要があります。

于 2008-11-19T04:54:03.190 に答える
-1

これが役立つかもしれません: 画像の下の反射

#!/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
于 2010-04-23T19:20:40.167 に答える