GD および Image 関数
PHP Manual

imagefilter

(PHP 5, PHP 7)

imagefilter画像にフィルタを適用する

説明

bool imagefilter ( resource $image , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 [, int $arg4 ]]]] )

imagefilter() は、指定したフィルタ filtertypeimage に適用します。

パラメータ

image

imagecreatetruecolor() のような画像作成関数が返す画像リソース。

filtertype

filtertype は、以下のいずれかです。

  • IMG_FILTER_NEGATE: 画像の色を反転させます。
  • IMG_FILTER_GRAYSCALE: 画像をグレースケールに変換します。
  • IMG_FILTER_BRIGHTNESS: 画像の輝度を変更します。 輝度レベルを arg1 で設定します。輝度の範囲は -255 から 255 までです。
  • IMG_FILTER_CONTRAST: 画像のコントラストを 変更します。コントラストのレベルを arg1 で設定します。
  • IMG_FILTER_COLORIZE: IMG_FILTER_GRAYSCALE と似ていますが、 色を指定することが可能です。 arg1arg2 および arg3 を使用して redgreenblue の値を指定します。また 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($imIMG_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($imIMG_FILTER_BRIGHTNESS20))
{
    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($imIMG_FILTER_COLORIZE02550))
{
    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($imIMG_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($im255 $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) * 2imagesy($logo1));

// Apply pixelation to each instance, with a block 
// size of 3
imagefilter($logo1IMG_FILTER_PIXELATE3);
imagefilter($logo2IMG_FILTER_PIXELATE3true);

// Merge the differences onto the output image
imagecopy($output$logo10000imagesx($logo1) - 1imagesy($logo1) - 1);
imagecopy($output$logo2imagesx($logo2), 000imagesx($logo2) - 1imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);

// Output the differences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>

上の例の出力は、 たとえば以下のようになります。

出力例 : imagefilter() でのモザイク処理

注意

参考


GD および Image 関数
PHP Manual