(PHP 5, PHP 7)
imagefilter — 画像にフィルタを適用する
$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
: Converts the image into
grayscale by changing the red, green and blue components to their
weighted sum using the same coefficients as the REC.601 luma (Y')
calculation. The alpha components are retained. For palette images the
result may differ due to palette limitations.
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
でモザイク効果のモードを指定します。
arg1
IMG_FILTER_BRIGHTNESS
: 輝度レベル。
IMG_FILTER_CONTRAST
: コントラストレベル。
IMG_FILTER_COLORIZE
: 赤コンポーネントの値。
IMG_FILTER_SMOOTH
: 平滑度レベル。
IMG_FILTER_PIXELATE
: ピクセル単位のブロックサイズ。
arg2
IMG_FILTER_COLORIZE
: 緑コンポーネントの値。
IMG_FILTER_PIXELATE
: 高度なモザイク効果を使用するか否か
(デフォルトは FALSE
)。
arg3
IMG_FILTER_COLORIZE
: 青コンポーネントの値。
arg4
IMG_FILTER_COLORIZE
: アルファチャネル。
0 から 127 までの値で、0 は完全な不透明、127
は完全な透明を表す。
成功した場合に TRUE
を、失敗した場合に FALSE
を返します。
バージョン | 説明 |
---|---|
5.2.5 |
IMG_FILTER_COLORIZE
でアルファチャネルをサポートするようになりました。
|
例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 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Merge the differences onto the output image
imagecopy($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 differences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>
上の例の出力は、 たとえば以下のようになります。