0

Imagemagick ( www.imagemagick.org )を使用しています。

私はホストゲーターを使用しているため、 imagickと magickwand もインストールされています。

私は imagick と magickwand で簡単な操作を行うことができますが、imagemagick.org で高度なチュートリアルを再現したい場合は失敗します。

目標: http://www.imagemagick.org/Usage/advanced/#jigsawを機能させる

質問:

imagickまたはmagickwandでこれを行うにはどうすればよいですか?

exec(....) のように、コマンドラインを介してモジュール imagemagick と通信することはできますか?

ありがとう 4 つの短いヘルプ

4

3 に答える 3

1

exec()またはshell_exec( )を使用できます。

例えば:

exec('/path/to/your/imagick/convert jigsaw_tmpl.png -edge .5 -blur 0x.5 jigsaw_edge.png');

もう 1 つ注意点exec()があります。PHP セーフ モードでは機能しません。

于 2012-04-30T01:27:59.337 に答える
0

Imagick で実行するのは非常に複雑だと思います (実行できないとは言いません)。上で述べたように、最善の策は Imagemagick コマンド ラインと exec( ) です。一度に 1 つのコマンドを作成します。後でコマンドを組み合わせることができる場合があります。品質が低下し始めるため、中間イメージに jpg を使用しないでください。

Anthony には、ページのそのセクションの下部にリンクされている使用できる Bash スクリプトがあるため、どのような効果を求めているかによって異なります。

execを使用してphpで実行できます。サーバーにスクリプトをアップロードします。サーバーのセットアップに応じて、755または777にCHMODします。

// Run the script 
exec("/FULL PATH TO JIGSAW/jigsaw options input.jpg mask.png output.png 2>&1", $array); 
//Display any errors 
echo "<br>".print_r($array)."<br></pre>";

これが Hostgator アカウントで機能するかどうかはわかりませんが、なぜ機能しないのかわかりません。

また、私はそれを試していません。入力画像に合わせてマスク画像が必要です。

サーバーでこれを試したところ、次のエラーが表示されました: /bin/bash^M: bad interpreter: No such file or directory これは私には何の意味もありません!

Anthony の画像と Imagemagick の行と行と exec( ) を使用したコードを使用して 1 つのジグソー ピースを作成する

exec("convert jigsaw_tmpl.png -edge .5 -blur 0x.5 jigsaw_edge.png");

$cmd = " holocaust_md.jpg \( jigsaw_edge.png -negate \) -geometry +365+96 ".
" -compose multiply -composite -crop 100x100+365+96 +repage ";

exec("convert $cmd jigsaw_outline.png");    

$cmd = " holocaust_md.jpg -crop 100x100+365+96! -background none -flatten ".
" +repage \( jigsaw_tmpl.png +matte \) -compose CopyOpacity -composite ".
" -rotate -20 -gravity center -crop 100x100+0+0 +repage ";          

exec("convert $cmd jigsaw_cutout.png");         

$cmd = " jigsaw_cutout.png \( +clone -channel A -separate +channel -negate ".
" -background black -virtual-pixel background -blur 0x2 -shade 120x21.78 ".
" -contrast-stretch 0% +sigmoidal-contrast 7x50%  -fill grey50 -colorize 10% ".
" +clone +swap -compose overlay -composite \) -compose In -composite ";

exec("convert $cmd jigsaw_bevel.png");            

$cmd = " jigsaw_bevel.png \( +clone -fill DarkSlateGrey -colorize 100% -repage +0+1 \) ".
" \( +clone -repage +1+2 \)  \( +clone -repage +1+3 \) \( +clone -repage +2+4 \) ".
" \( +clone -repage +2+5 \) -background none -compose DstOver -flatten";

exec("convert $cmd jigsaw_thickness.png");

$cmd = " jigsaw_thickness.png \( +clone -background Black -shadow 50x3+4+4 \) ".
" -background none -compose DstOver -flatten";

exec("convert $cmd jigsaw_shadow.png");
于 2012-04-30T07:13:30.533 に答える
0

わかった。コマンドライン コマンドを直接使用したソリューションは、次のようになります。

exec("/usr/lib/convert user/set/seinfeld/image/image/data/apple_cinema_30.jpg -edge .5 -blur 0x.5 joy_ege.png");

明らかに、モジュールへのパスを知り、画像へのパスを正しく設定する必要があります(a)。

必要に応じて、imagick/magickwand の手順で更新されます。

于 2012-04-30T01:27:30.890 に答える