2016-11-26 6 views
1

php imagick拡張を使用していますが、描画メソッドを使用してイメージの背景色を変更する方法がわかりません。あなたは以下の通りですphp imagemagick描画メソッドを使用して背景ピクセルを白ピクセルに置き換える方法

enter image description here

+0

私はhttp://engblog.polyvore.com/2013/05/under-hood-how-we-mask-our-images.htmlからpolyvore engineering blogを学んでいます。私は最初のステップe.iを行った。変調するが、2番目のステップで私はこれを行う方法を混乱させる。私が尋ねたいことを理解するためにリンクを通ってください。 –

+0

評価できるコードを追加する必要があります。 – Surt

答えて

1

polyvoreチュートリアルは

は次に、我々は は2,2のXY位置にあることをピクセルで始まる、白で背景を置き換えると述べました。確かに、 の部分は、バックグラウンドの一部であり、製品ではないので、そこから開始します。 ImageMagickには、 開始ピクセルと同じ色のピクセルを新しい色で置き換えるDrawコマンドがあります。 Drawを使用して背景ピクセル (開始ピクセルと同じ色)を白のピクセルで置き換えます。我々はまた、 を使用して、微妙な勾配 と背景のバリエーションを考慮に入れて、開始ピクセルと同じ色の のピクセルを置き換えるように、ファズ係数で描画します。

あなたが提示したイメージはすでに白い背景を持っているため、明らかにこのステップで成功しました。残っているのは、白のピクセルを透明に変換することだけです。コマンドラインから、それは

magick UQ1U4.png -fill none -fuzz 5% -draw 'color 2,2 floodfill' out.png 

だこれは(左上隅のピクセルの近く)(2,2)ピクセル透明(色は「none」)と同じ色である任意のピクセルになります。 Floodfillは、ターゲットピクセルの色と一致し、ターゲットピクセルまたは再着色されている別のピクセルの隣にあるピクセルを再現します。

あなたは、PHPのImagickインタフェースを介して同じ操作を行うことができます。

bool Imagick::floodFillPaintImage (mixed $fill , float $fuzz , mixed $target , int $x , int $y , bool $invert [, int $channel =magick::CHANNEL_DEFAULT ])' 

コマンドラインで同じパラメータを使用して。

ImageMagickの古いバージョンをお持ちの場合はmagickの代わりにconvertを使用してください。 Windowsの場合は、%の代わりに%%を使用してください。

+0

sir、 'Imagick :: colorFloodfillImage(mixed $ fill、float $ fuzz、mixed $ bordercolor、int $ x、int $ y)'は廃止されました(<6.3.8)。この代わりに、私は 'bool Imagick :: floodFillPaintImage(mixed $ fill、float $ fuzz、mixed $ target、int $ x、int $ y、bool $ invert [、int $ channel = Imagick :: CHANNEL_DEFAULT])'を使用しました。私の問題は解決しました。 –

+0

@ KusumGuptaありがとう、私はあなたの最新情報で答えを編集しました。 –

関連する問題