imagefilter 对图像使用过滤器

发表日期:2021-07-01 08:55:59 | 来源: | | 浏览(687) 分类:GD 和图像处理 函数

imagefilter

(PHP 5, PHP 7, PHP 8)

imagefilter对图像使用过滤器

说明

imagefilter(
    resource $src_im,
    int $filtertype,
    int $arg1 = ?,
    int $arg2 = ?,
    int $arg3 = ?
): bool

imagefilter() 把过滤器   filtertype 应用到图像上,在需要时使用   arg1arg2 和   arg3

filtertype 可以是下列中的一个:

  •  IMG_FILTER_NEGATE:将图像中所有颜色反转。    

  •  IMG_FILTER_GRAYSCALE:将图像转换为灰度的。    

  •  IMG_FILTER_BRIGHTNESS:改变图像的亮度。用      arg1 设定亮度级别。    

  •  IMG_FILTER_CONTRAST:改变图像的对比度。用      arg1 设定对比度级别。    

  •  IMG_FILTER_COLORIZE:与      IMG_FILTER_GRAYSCALE 类似,不过可以指定颜色。用      arg1arg2 和      arg3 分别指定      redblue 和      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())返回的图象资源。

  • filtertype

  • filtertype can 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. Use arg1 to set the level of          brightness.        

    •  IMG_FILTER_CONTRAST: Changes the contrast of          the image. Use arg1 to set the level of          contrast.        

    •  IMG_FILTER_COLORIZE: Like          IMG_FILTER_GRAYSCALE, except you can specify the          color. Use arg1, arg2 and          arg3 in the form of          red, blue,          green and arg4 for the          alpha channel. 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.          Use arg1 to set the level of smoothness.        

    •  IMG_FILTER_PIXELATE: Applies pixelation effect          to the image, use arg1 to set the block size          and arg2 to 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 to false).        

  • 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.0Pixelation support (IMG_FILTER_PIXELATE) was added.
5.2.5Alpha support for IMG_FILTER_COLORIZE was 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 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);
?>

以上例程的输出类似于:

21009b70229598c6a80eef8b45bf282b-imagefilterpixelate.png


注释

参见



集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。