ここでは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
あなたが見ることができるように国境は純粋な黒ではなく、ブレンドので、この方法は、まだあなたが提供された画像といくつかの暗いピクセルを残し、残念ながら
:
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つのコマンドで実行できますが、それは簡単ではありません。
上記の結果:最終ノートで
、私はあなたがコマンドラインからPHPのImagickやImageMagickのを使用しているかどうかはわかりません。数年前、私はImagickを使用しようとしましたが、コマンドラインと比較してドキュメントの不足からすぐに迷ってしまいました。代わりに、私はPHPからコマンドを実行します(例えば、exec()
またはpassthru()
)。 PHPのシェルコマンドを決して実行してはいけないと言っている人もいるかもしれませんが、議論を慎重に脱出していれば、まだ説得力のある議論をしています。その後、Imagemagickドキュメンテーション全体を自由に(http://www.imagemagick.org/Usage/)持っていきます。
乾杯。
グラフィックスのサイズを知らずに右下隅から塗りつぶす方法を知っていますか? – alfC
@alfC 180度回転して塗りつぶしてから、さらに回転します:-) –