2008-10-13 18 views
5

Kısaca: mevcut bir görüntüden genişliğini ve yüksekliğini alır böyleceImageMagick Yansıma

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

nasıl ImageMagick komutu yukarıdaki değiştirebilirim? Tek satırlık bir komut olarak kalmasına ihtiyacım var.


Detayları:

programlama ImageMagick kullanarak bir görüntü yansıma oluşturmak çalışıyorum. Aradığım etki, bir su havuzunun kenarındaki bir nesneye bakarken göreceğinize benzer. Ne here yapmaya çalıştığım üzerinde oldukça iyi bir iş parçacığı var ama çözüm tam olarak aradığım şey değil. ImageMagick'i bir C# .Net uygulamasından çağıracağımdan, temp dosyaları olmadan bir çağrı kullanmak ve görüntüyü stdout üzerinden döndürmek istiyorum. Şimdiye kadar var ...

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 

Bu, tamam, ancak bana tam soluğu vermiyor. Yukarıdan aşağıya güzel bir katı solgunluk yerine, soldan sağa doğru bir solma veriyor. İstediğim soluğu alamadığımdan biraz daha fazla aydınlatmak için (-negate -evaluate 0,3-doorgate) bölümünü ekledim. Ayrıca, gradyanı oluştururken görüntünün boyutunda sabit kodu kullanmak istemiyorum (585x128 degrade:). Ayrıca, orijinal görüntünün saydamlığını mümkün olduğunca korumak istiyorum. "-"

+0

Bunu cevaplayabilirsiniz. Sorguyu tekrar kullanıcı sayfamda bulabilirim. – Sparr

+0

Bunu bir cevaba koydum çünkü doğrudan ifade ettiğin kısıtlamalara değinmiyor, ama bence yararlı bir bilgi (özellikle * nix odaklı bir bağlamda): http://blogs.sun.com/constantin/ Giriş/present_images_and_screenshots_the – micahwittman

+0

Sadece referans için, burada istediğinizi inandığım şeyi yapmak için GD kütüphanesini kullanan bir PHP betiği: http://reflection.corephp.co.uk – leek

cevap

1

sen belki C# görüntü boyutlarını almak alabilir, C# çağırarak ise

Birlikte "NewImage.png" yerine plan Stdout'a gidin. Sonra sen girdi olarak mevcut bir resmi almalı

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

Ayrı bir çağrı yapmak zorunda kalmamayı tercih ederim görüntü boyutunu elde edin. ImageMagick görüntüyü yükleyeceğinden, boyut bilgisini yeniden kullanabilmeyi umuyordum. –

0

ile ImageMagick komutu çağırır ve -fx kullanarak yerine gradyan sözde formatı kullanarak degrade kendiniz oluşturun.

-1

bu yardımcı olabilir olabilir: Bu akşam eve gidince Reflection under an image

#!/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