Php/docs/function.imagefilter
imagefilter
(PHP 5, PHP 7)
imagefilter — 对图像使用过滤器
说明
imagefilter
( 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
。
Example #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);?>
Example #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);?>
Example #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. Usearg1
to set the level of brightness. -
IMG_FILTER_CONTRAST
: Changes the contrast of the image. Usearg1
to set the level of contrast. -
IMG_FILTER_COLORIZE
: LikeIMG_FILTER_GRAYSCALE
, except you can specify the color. Usearg1
,arg2
andarg3
in the form ofred
,blue
,green
andarg4
for thealpha
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. Usearg1
to set the level of smoothness. -
IMG_FILTER_PIXELATE
: Applies pixelation effect to the image, usearg1
to set the block size andarg2
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 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_COLORIZE was added.
|
范例
Example #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);?>
Example #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.';}?>
Example #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.';}?>
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($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.';}?>
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) * 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);?>
以上例程的输出类似于: