2011-01-29 9 views
0

私が必要とするようなPHPバージョンが見つかりました。Perl Image :: Magickドロップシャドウ(非コマンドライン)を作成するメソッド

<?php 

try 
{ 

    /*** a new Imagick object ***/ 
    $im = new Imagick('images/spork.jpg'); 

    /*** set the image format to png ***/ 
    $im->setImageFormat('png'); 

    /*** an object for the drop shadow ***/ 
    $shadow = $im->clone(); 

    /*** an object for the drop shadow ***/ 
    $drop_shadow = $im->clone(); 

    /*** set shadow color to black ***/ 
    $drop_shadow->setImageBackgroundColor(new ImagickPixel('black')); 

    /*** Create the shadow ***/ 
    $drop_shadow->shadowImage(80, 3, 5, 5); 

    /*** stick them together ***/ 
    $drop_shadow->compositeImage($im, Imagick::COMPOSITE_OVER, 0, 0); 

    /*** write image to disk ***/ 
    $drop_shadow->writeImage('/tmp/dropshadow.png'); 

    echo 'Wrote Image'; 
} 
catch(Exception $e) 
{ 
    echo $e->getMessasge(); 
} 
?> 

(画像を投稿しようとしましたが、私にはできないだろう。)ここ 例:

#!/usr/bin/perl -w 
use strict; 
my imageurl='http://nonprofit.org/images/someimage.jpg'; 
my $contact='[email protected]'; 
system("montage $imageurl -geometry 476x356 -background '#F7F7F7' -quality 90 -fill '#ffffff' -shadow \ -stroke '#000C' -strokewidth 2 -gravity SouthWest -font Candice -pointsize 14 -annotate +2+1 '$contact' \ -stroke none -fill white -gravity SouthWest -font Candice -pointsize 14 -annotate +2+2 '$contact' \ -gravity center $new"); 

system("montage $new -geometry 480x360 -background '#F7F7F7' -quality 90 -fill '#F7F7F7' $new"); 
:今 spork with drop shadow

、私は(別の画像付き)はPerlでこれを使用して必要な結果を達成しています

これは、ページbgcolor f7f7f7と一致する480x360のボックス/キャンバスを中心とした素晴らしい影付きのアスペクト比(ed)画像を与えます。

システムメソッドを使用せずにこれを実行したいと思います。

だから、私はこれを試してみました:

動作しません
 #!/usr/bin/perl -w 
     use Image::Resize; 
     use Image::Magick; 
     use strict; 
     my imageurl='http://nonprofit.org/images/someimage.jpg'; 
     my $contact='[email protected]'; 
     my $ibig = Image::Magick->new; 
     $ibig->Read("$imageurl"); 
     $ibig->Resize(geometry=>'476x356'); 
     $ibig->Montage(geometry=>'476x356', 
      background=>'#F7F7F7', 
      quality=>90,gravity=>'center', 
      shadow=>80x4+4+4); 
    #tried shadow=>'true' and '1' and many other variations. 
    $ibig->Annotate(text=>$contact, 
      x=>2,y=>1, 
      font=>'Candice', 
      pointsize=>14, 
      stroke=>'#000C', 
      strokewidth=>2, 
      gravity=>'SouthWest'); 

    $ibig->Annotate(text=>$contact, 
      x=>2,y=>2, 
      font=>'Candice', 
      pointsize=>14, 
      fill=>'#ffffff', 
      stroke=>'none', 
      gravity=>'SouthWest'); 

    $ibig->Montage(geometry=>'480x360', 
      background=>'#F7F7F7', 
      quality=>90, 
      fill=>'#F7F7F7'); 

$ibig->Write("$new"); 

。注釈は機能しますが、ドロップシャドウはなく、画像は通常479x360までになります。

システムメソッドは完璧に機能しますが、私は本当にImage :: Magickの例でこれを行う方法を学びたいと思います。

私はこれを研究し、読書をして2日間過ごしました。

私はそれを理解できないとき、私はstackoverflowに来て、いつも解決策を得る!

ありがとうございます。

(問題のフォーマットについては申し訳ありません..私はそれをクリーンアップしてみました。)

+0

"私はそれを理解できないとき、私はスタックオーバーフローに来て、いつも解決策を得ます!"なぜ評判は1しかないのですか? – mscha

+0

Dunno。ここに一年来ました。おそらく、私はいつも一日の終わりに私のクッキーを削除するのだろうか?何にせよ、代理人は気にしないでください。それは私の答えを得る能力に影響するのだろうか?私は心配しています.. – DulcimerDude

答えて

0

新しいイメージを返しMontage()。 試してみてください。

$ibig = $ibig->Montage(...) 

documentationは、明示的に、残念ながら、これを言及していないが、これを表示このページのいくつかの例があります。

+0

"Exception 410:認識できない属性' quality '@ Magick.xs/XS_Image__Magick_Montage/9797 "(" Exception 410:シャドウ構文についてはどうでしょうか? ? – DulcimerDude

+0

'shadow => 1'は私のために仕掛けをしているようだ。 – mscha

+0

私はその最後の行に品質を投げつけたが、それ以上のエラーはないが、それでも私の本当の髪の毛引っ張り機である影はない – DulcimerDude

関連する問題