2012-02-15 18 views
4

この画像の黒い境界を変更したいと思います: http://dev.loungeup.net/im/ PHPのImagickで透明にしてください。Imagick。透明になるように色を変更する

結果画像の灰色の枠線が表示され、灰色の枠内の画像が表示され、灰色の枠外の画像(すべて黒色)は透過的になり、基になるコンテンツ(HTMLページなど)が表示されます。

私はドキュメントを何度も読んできましたが、いくつかの解決策を試しましたが、それを達成する方法がわかりませんでした。

何か助けていただければ幸いです。

おかげ

答えて

13

ここではPhotoshopの魔法の杖ツールに似ていますが、使用できるひとつの方法です。

convert original.jpg:元のイメージとのImageMagickを開始ここで

convert original.jpg -alpha set -channel alpha -fuzz 18% \ 
-fill none -floodfill +0+0 black transparent-border.png 

が故障したコマンドですが、

-alpha set:アルファチャンネルを有効にする

-channel alpha:アルファチャンネルに

-fuzz 18%を、その後の事業者の行為を持っている:-floodfill ...

-fill noneを参照してください。-floodfill ...

-floodfill +0+0 blackを参照してください。左上隅(+0+0)から開始し、 -fuzz内の隣接ピクセルを見つけ、の色の距離を置き換えて置き換えます。-fill

あなたが見ることができるように国境は純粋な黒ではなく、ブレンドので、この方法は、まだあなたが提供された画像といくつかの暗いピクセルを残し、残念ながら Imagemagick Method 1

transparent-border.png:出力画像ここ

の結果ですビットは内側の灰色の境界線を持ち、画像自体はかなり小さいです。

品質の良いソースイメージを使用した方が良い結果が得られます。変更後のイメージサイズを小さくすることができます。

これらの小さな画像に悩まされている場合(または別の方法を使用したい場合)は、独自のマスク形状を作成して元の写真の形状よりも小さい別のルートに進んでください自分の灰色の枠線を追加し直してください。私はこのプロセスの一例を以下にまとめました。

この方法のための可能なコマンドは次のようになります。

convert original.jpg mask.png -compose CopyOpacity -composite \ 
-compose src-over new-border.png -composite clean-result.png 

...壊れ...

convert original.jpg mask.png:元のイメージとのImageMagickを開始し、マスクをもたらします。(mask.pngは黒い背景上の写真の白い丸い四角形の形状ですが、その形状は元の形状よりわずかに小さくなります - その結果、元の灰色と黒の境界が削除されます)。

-compose CopyOpacity -composite

-compose src-over original.pngから形状を "ノックアウト" するmask.pngを使用:単純なオーバーレイ

new-border.png -compositeに合成方法をリセットする:PNG 3ピクセル幅である(灰色の境界をオーバーレイ境界、透明な背景上にマスクエッジの各側に1ピクセル)

clean-result.png:私はmask.pngと新border.pngを作成

出力画像Photoshopで。 は、Imagemagickのベクトルツールを使用し、これをすべてoriginalコマンドを使って1つのコマンドで実行できますが、それは簡単ではありません。

上記の結果:最終ノートで Imagemagick Method 2

、私はあなたがコマンドラインからPHPのImagickやImageMagickのを使用しているかどうかはわかりません。数年前、私はImagickを使用しようとしましたが、コマンドラインと比較してドキュメントの不足からすぐに迷ってしまいました。代わりに、私はPHPからコマンドを実行します(例えば、exec()またはpassthru())。 PHPのシェルコマンドを決して実行してはいけないと言っている人もいるかもしれませんが、議論を慎重に脱出していれば、まだ説得力のある議論をしています。その後、Imagemagickドキュメンテーション全体を自由に(http://www.imagemagick.org/Usage/)持っていきます。

乾杯。

+0

グラフィックスのサイズを知らずに右下隅から塗りつぶす方法を知っていますか? – alfC

+1

@alfC 180度回転して塗りつぶしてから、さらに回転します:-) –

関連する問題