imagefilltoborder
imageflip
GD および Image 関数
PHP Manual

# imagefilter

(PHP 5)

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

### 説明

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

imagefilter() は、指定したフィルタ `filtertype` を `image` に適用します。

### パラメータ

`image`

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

`filtertype`

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

  - `IMG_FILTER_NEGATE`: 画像の色を反転させます。
  - `IMG_FILTER_GRAYSCALE`: 画像をグレースケールに変換します。
  - `IMG_FILTER_BRIGHTNESS`: 画像の輝度を変更します。 輝度レベルを `arg1` で設定します。
  - `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);
?>`

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

### 注意

> 注意: この関数は、PHP がバンドル版の GD ライブラリで コンパイルされている場合のみ使用可能です。

### 参考

- imageconvolution() - div および offset の係数を使用し、3x3 の畳み込み配列を適用する

imagefilltoborder
imageflip
GD および Image 関数
PHP Manual