imagefilter
(PHP 5, PHP 7, PHP 8)
imagefilter — 對影象使用過濾器
說明
   imagefilter(
resource
int
int
int
int
): bool
  resource
$src_im,int
$filtertype,int
$arg1 = ?,int
$arg2 = ?,int
$arg3 = ?): bool
   imagefilter() 把過濾器
   filtertype 應用到影象上,在需要時使用
   arg1,arg2 和
   arg3。
  
   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,blue和green。每種顏色範圍是 0 到 255。
- 
     
      IMG_FILTER_EDGEDETECT:用邊緣檢測來突出影象的邊緣。
- 
     
      IMG_FILTER_EMBOSS:使影象浮雕化。
- 
     
      IMG_FILTER_GAUSSIAN_BLUR:用高斯演算法模糊影象。
- 
     
      IMG_FILTER_SELECTIVE_BLUR:模糊影象。
- 
     
      IMG_FILTER_MEAN_REMOVAL:用平均移除法來達到輪廓效果。
- 
     
      IMG_FILTER_SMOOTH:使影象更柔滑。用arg1設定柔滑級別。
   成功時返回 true, 或者在失敗時返回 false。
  
示例 #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');
} else {
    echo 'Image brightness change failed.';
}
imagedestroy($im);
?>
示例 #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');
} else {
    echo 'Green shading failed.';
}
imagedestroy($im);
?>
參數
- 
image
- 
由圖像建立函式(例如imagecreatetruecolor())返回的 GdImage 對象。 
- 
filtertype
- 
      filtertypecan be one of the following:- 
         
          IMG_FILTER_NEGATE: Reverses all colors of the image.
- 
         
          IMG_FILTER_GRAYSCALE: Converts the image into grayscale.
- 
         
          IMG_FILTER_BRIGHTNESS: Changes the brightness of the image. Usearg1to set the level of brightness.
- 
         
          IMG_FILTER_CONTRAST: Changes the contrast of the image. Usearg1to set the level of contrast.
- 
         
          IMG_FILTER_COLORIZE: LikeIMG_FILTER_GRAYSCALE, except you can specify the color. Usearg1,arg2andarg3in the form ofred,blue,greenandarg4for thealphachannel. The range for each color is 0 to 255.
- 
         
          IMG_FILTER_EDGEDETECT: Uses edge detection to highlight the edges in the image.
- 
         
          IMG_FILTER_EMBOSS: Embosses the image.
- 
         
          IMG_FILTER_GAUSSIAN_BLUR: Blurs the image using the Gaussian method.
- 
         
          IMG_FILTER_SELECTIVE_BLUR: Blurs the image.
- 
         
          IMG_FILTER_MEAN_REMOVAL: Uses mean removal to achieve a "sketchy" effect.
- 
         
          IMG_FILTER_SMOOTH: Makes the image smoother. Usearg1to set the level of smoothness.
- 
         
          IMG_FILTER_PIXELATE: Applies pixelation effect to the image, usearg1to set the block size andarg2to set the pixelation effect mode.
 
- 
         
          
- 
arg1
- 
      - 
         
          IMG_FILTER_BRIGHTNESS: Brightness level.
- 
         
          IMG_FILTER_CONTRAST: Contrast level.
- 
         
          IMG_FILTER_COLORIZE: 紅色成分的值。
- 
         
          IMG_FILTER_SMOOTH: Smoothness level.
- 
         
          IMG_FILTER_PIXELATE: Block size in pixels.
 
- 
         
          
- 
arg2
- 
      - 
         
          IMG_FILTER_COLORIZE: 綠色成分的值。
- 
         
          IMG_FILTER_PIXELATE: Whether to use advanced pixelation effect or not (defaults tofalse).
 
- 
         
          
- 
arg3
- 
      - 
         
          IMG_FILTER_COLORIZE: 藍色成分的值。
 
- 
         
          
- 
arg4
- 
      - 
         
          IMG_FILTER_COLORIZE: Alpha channel, A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.
 
- 
         
          
返回值
   成功時返回 true, 或者在失敗時返回 false。
  
更新日誌
| 版本 | 說明 | 
|---|---|
| 5.3.0 | Pixelation support ( IMG_FILTER_PIXELATE) was added. | 
| 5.2.5 | Alpha support for IMG_FILTER_COLORIZEwas added. | 
範例
示例 #4 imagefilter() grayscale example
<?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);
?>
示例 #5 imagefilter() brightness example
<?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.';
}
?>
示例 #6 imagefilter() colorize example
<?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.';
}
?>
示例 #7 imagefilter() negate example
<?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.';
}
?>
示例 #8 imagefilter() pixelate example
<?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);
?>
以上例程的輸出類似於:
