PHP+Imagickで色の置換

環境

PHP:7.1.2
ImageMagick:6.7.8
PECL Imagick:3.4.3

いつの間にか

Imagick::paintOpaqueImage

が非推奨になっていた。

代替関数は

Imagick::opaquePaintImage

公式マニュアルはこちら

使い方はマニュアルの通りだけど、指定した画像(image.png)の「白色を黒色に置き換えたい」という場合は

$im = new Imagick('image.png');
$im->opaquePaintImage('#ffffff', '#000000', 0, false);
$im->writeImage('image.png');

のような感じ。

全てマニュアルに書いてあるが、
第一引数:置き換え元のカラーコード、今回の場合は白色
第二引数:置き換え先のカラーコード、今回の場合は黒色
第三引数:曖昧さを表す。 JPGなど白色といっても「#ffffff」のもあるし「#fffffe」もあるような場合。 0~100で指定。 0の場合は曖昧さは無し、#ffffffのもののみ置換する。 GIFやPNGなどの画像パーツっぽいものを置換する場合には0もしくは少なめ、JPGの場合は多めが良いと思う。
第四引数:false=白色を置換、true=白色以外を置換。 通常はfalseになるはず。
第五引数:有効なチャンネル数を指定するらしい。 画像形式には疎く、今回は全く必要なかったためスルー(デフォルト値を使用)

元の「Imagick::paintOpaqueImage」とは微妙に引数が変わっているので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です