imagefilter
(PHP 5, PHP 7)
imagefilter — 画像にフィルタを適用する
説明
imagefilter
( resource $image
, int $filtertype
[, int $arg1
[, int $arg2
[, int $arg3
[, int $arg4
]]]] ) : bool
imagefilter() は、指定したフィルタ
filtertype
を image
に適用します。
パラメータ
image
- imagecreatetruecolor() のような画像作成関数が返す画像リソース。
filtertype
filtertype
は、以下のいずれかです。
-
IMG_FILTER_NEGATE
: 画像の色を反転させます。 -
IMG_FILTER_GRAYSCALE
: REC.601 luma (Y') の計算と同じ係数を使い、 重み付けを赤、緑、青のコンポーネントごとに変えることで、 画像を白黒にします。アルファ値は保持されます。 パレットの制限のため、パレット画像の結果は異なるかもしれません。 -
IMG_FILTER_BRIGHTNESS
: 画像の輝度を変更します。 輝度レベルをarg1
で設定します。輝度の範囲は -255 から 255 までです。 -
IMG_FILTER_CONTRAST
: 画像のコントラストを 変更します。コントラストのレベルをarg1
で設定します。 -
IMG_FILTER_COLORIZE
:IMG_FILTER_GRAYSCALE
と似ていますが、 色を指定することが可能です。arg1
、arg2
およびarg3
を使用してred
、green
、blue
の値を指定します。またarg4
を使用してalpha
チャネルの値を指定します。 各値の範囲は 0 から 255 までです。 -
IMG_FILTER_EDGEDETECT
: エッジを検出し、 画像のエッジを強調します。 -
IMG_FILTER_EMBOSS
: 画像にエンボス処理を行います。 -
IMG_FILTER_GAUSSIAN_BLUR
: ガウス分布を 使用して画像をぼかします。 -
IMG_FILTER_SELECTIVE_BLUR
: 画像をぼかします。 -
IMG_FILTER_MEAN_REMOVAL
: 平均を除去し、 「スケッチ風の」効果を得ます。 -
IMG_FILTER_SMOOTH
: 画像を滑らかにします。 滑らかさのレベルをarg1
で指定します。 -
IMG_FILTER_PIXELATE
: モザイク効果を画像に適用します。arg1
でブロックの大きさを、 そしてarg2
でモザイク効果のモードを指定します。 -
IMG_FILTER_SCATTER
: Scatter 効果を 画像に適用します。arg1
とarg2
を効果の強さを定義するのに使い、 選んだピクセルの色にだけ適用するために 追加でarg3
を使います。
-
arg1
- ;*
IMG_FILTER_BRIGHTNESS
: 輝度レベル。
-
IMG_FILTER_CONTRAST
: コントラストレベル。 -
IMG_FILTER_COLORIZE
: 赤コンポーネントの値。 -
IMG_FILTER_SMOOTH
: 平滑度レベル。 -
IMG_FILTER_PIXELATE
: ピクセル単位のブロックサイズ。 -
IMG_FILTER_SCATTER
: 効果を減らすレベル。 この値は、arg2
で設定する追加レベル以上でなければなりません。
-
arg2
- ;*
IMG_FILTER_COLORIZE
: 緑コンポーネントの値。
-
IMG_FILTER_PIXELATE
: 高度なモザイク効果を使用するか否か (デフォルトはfalse
)。 -
IMG_FILTER_SCATTER
: 効果の追加レベル
-
arg3
- ;*
IMG_FILTER_COLORIZE
: 青コンポーネントの値。
-
IMG_FILTER_SCATTER
: オプション。 効果を適用するインデックスカラーの値の配列。
-
arg4
- ;*
IMG_FILTER_COLORIZE
: アルファチャネル。 0 から 127 までの値で、0 は完全な不透明、127 は完全な透明を表す。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
変更履歴
バージョン | 説明 |
---|---|
7.4.0 | Scatter 効果のサポート (IMG_FILTER_SCATTER ) が追加されました。
|
例
例1 imagefilter() グレースケールの例
<?php$im = imagecreatefrompng('dave.png');if($im && imagefilter($im, IMG_FILTER_GRAYSCALE)){ echo 'Image converted to grayscale.'; imagepng($im, 'dave.png');}else{ echo 'Conversion to grayscale failed.';}imagedestroy($im);?>
例2 imagefilter() 輝度の例
<?php$im = imagecreatefrompng('sean.png');if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20)){ echo 'Image brightness changed.'; imagepng($im, 'sean.png'); imagedestroy($im);}else{ echo 'Image brightness change failed.';}?>
例3 imagefilter() 単色化の例
<?php$im = imagecreatefrompng('philip.png');/* R, G, B, so 0, 255, 0 is green */if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0)){ echo 'Image successfully shaded green.'; imagepng($im, 'philip.png'); imagedestroy($im);}else{ echo 'Green shading failed.';}?>
例4 imagefilter() での打ち消しの例
<?php// Define our negate function so its portable for // php versions without imagefilter()function negate($im){ if(function_exists('imagefilter')) { return imagefilter($im, IMG_FILTER_NEGATE); } for($x = 0; $x < imagesx($im); ++$x) { for($y = 0; $y < imagesy($im); ++$y) { $index = imagecolorat($im, $x, $y); $rgb = imagecolorsforindex($index); $color = imagecolorallocate($im, 255 - $rgb['red'], 255 - $rgb['green'], 255 - $rgb['blue']); imagesetpixel($im, $x, $y, $color); } } return(true);}$im = imagecreatefromjpeg('kalle.jpg');if($im && negate($im)){ echo 'Image successfully converted to negative colors.'; imagejpeg($im, 'kalle.jpg', 100); imagedestroy($im);}else{ echo 'Converting to negative colors failed.';}?>
例5 imagefilter() でのモザイク処理の例
<?php// Load the PHP logo, we need to create two instances // to show the differences$logo1 = imagecreatefrompng('./php.png');$logo2 = imagecreatefrompng('./php.png');// Create the image instance we want to show the // differences on$output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));// Apply pixelation to each instance, with a block // size of 3imagefilter($logo1, IMG_FILTER_PIXELATE, 3);imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);// Merge the differences onto the output imageimagecopy($output, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1, imagesy($logo1) - 1);imagecopy($output, $logo2, imagesx($logo2), 0, 0, 0, imagesx($logo2) - 1, imagesy($logo2) - 1);imagedestroy($logo1);imagedestroy($logo2);// Output the differencesheader('Content-Type: image/png');imagepng($output);imagedestroy($output);?>
上の例の出力は、 たとえば以下のようになります。
例6 imagefilter() でのScatter効果の例
<?php// Load the image$logo = imagecreatefrompng('./php.png');// Apply a very soft scatter effect to the imageimagefilter($logo, IMG_FILTER_SCATTER, 3, 5);// Output the image with the scatter effectheader('Content-Type: image/png');imagepng($logo);imagedestroy($logo);?>
上の例の出力は、 たとえば以下のようになります。
注意
注意:
IMG_FILTER_SCATTER
の適用結果は常にランダムです。