imagefilter

(PHP 5, PHP 7)

imagefilter锟斤拷图锟斤拷使锟矫癸拷锟斤拷锟斤拷

说锟斤拷

imagefilter ( resource $src_im , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 ]]] ) : bool

imagefilter() 锟窖癸拷锟斤拷锟斤拷 filtertype 应锟矫碉拷图锟斤拷锟较o拷锟斤拷锟斤拷要时使锟斤拷 arg1锟斤拷arg2 锟斤拷 arg3锟斤拷

filtertype 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫碉拷一锟斤拷锟斤拷

  • IMG_FILTER_NEGATE锟斤拷锟斤拷图锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷色锟斤拷转锟斤拷
  • IMG_FILTER_GRAYSCALE锟斤拷锟斤拷图锟斤拷转锟斤拷为锟揭度的★拷
  • IMG_FILTER_BRIGHTNESS锟斤拷锟侥憋拷图锟斤拷锟斤拷锟斤拷取锟斤拷锟� arg1 锟借定锟斤拷锟饺硷拷锟斤拷
  • IMG_FILTER_CONTRAST锟斤拷锟侥憋拷图锟斤拷亩员榷取锟斤拷锟� arg1 锟借定锟皆比度硷拷锟斤拷
  • IMG_FILTER_COLORIZE锟斤拷锟斤拷 IMG_FILTER_GRAYSCALE 锟斤拷锟狡o拷锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷锟斤拷色锟斤拷锟斤拷 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 锟借定锟结滑锟斤拷锟斤拷

Note: 锟剿猴拷锟斤拷锟斤拷锟斤拷锟斤拷 GD 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 PHP 锟芥本锟叫匡拷锟矫★拷

锟缴癸拷时锟斤拷锟斤拷 TRUE锟斤拷 锟斤拷锟斤拷锟斤拷失锟斤拷时锟斤拷锟斤拷 FALSE锟斤拷

Example #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);
?>

Example #2 imagefilter() 锟斤拷锟斤拷锟斤拷锟斤拷

<?php
$im 
imagecreatefrompng('sean.png');
if (
$im && imagefilter($imIMG_FILTER_BRIGHTNESS20)) {
    echo 
'Image brightness changed.';
    
imagepng($im'sean.png');
} else {
    echo 
'Image brightness change failed.';
}

imagedestroy($im);
?>

Example #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');
} 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.0 Pixelation support (IMG_FILTER_PIXELATE) was added.
5.2.5 Alpha support for IMG_FILTER_COLORIZE was added.

锟斤拷锟斤拷

Example #4 imagefilter() grayscale example

<?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);
?>

Example #5 imagefilter() brightness example

<?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.';
}
?>

Example #6 imagefilter() colorize example

<?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.';
}
?>

Example #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($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.';
}
?>

Example #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) * 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);
?>

锟斤拷锟斤拷锟斤拷锟教碉拷锟斤拷锟斤拷锟斤拷锟斤拷冢锟�

Output of example : imagefilter() pixelate

注锟斤拷

Note: 锟剿猴拷锟斤拷锟斤拷锟斤拷锟斤拷 GD 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 PHP 锟芥本锟叫匡拷锟矫★拷

锟轿硷拷

  • imageconvolution() - 锟斤拷系锟斤拷 div 锟斤拷 offset 锟斤拷锟斤拷一锟斤拷 3x3 锟侥撅拷锟斤拷锟斤拷锟�