有个小需求,需要使用php代码对图片进行颜色调整,比如变成灰色,改变图片的亮度,对比度等等。而php中就内置了一个图片的滤镜函数 imagefilter() ,下面就来具体说说这个函数的用法。

php imagefilter() 函数

imagefilter():对指定的图片使用用指定的滤镜效果,成功返回TRUE,失败返回 FALSE

语法:

imagefilter( resource $image, int $filtertype, int $arg1, int $arg2, int $arg3, int $arg4 )

参数:

$image:指定的图像

$filtertype:指定的过滤器,其可选值如下

IMG_FILTER_NEGATE(0):反转图像的所有颜色。

IMG_FILTER_GRAYSCALE(1):通过将红色,绿色和蓝色分量更改为其加权总和,将图像转换为灰度。

IMG_FILTER_BRIGHTNESS(2):更改图像的亮度。使用$arg1设置亮度级别。亮度范围是-255至255。

IMG_FILTER_CONTRAST(3):更改图像的对比度。使用$arg1设置对比度级别。

IMG_FILTER_COLORIZE(4):与IMG_FILTER_GRAYSCALE一样,除了可以指定颜色。将$arg1,$arg2和$arg3以红色,绿色,蓝色和arg4的形式用于alpha通道。每种颜色的范围是0到255。

IMG_FILTER_EDGEDETECT(5):使用边检测突出显示图像中的边。

IMG_FILTER_GAUSSIAN_BLUR(6):将高斯模糊应用于图像。

IMG_FILTER_SELECTIVE_BLUR(7):将选择性模糊应用于图像。

IMG_FILTER_EMBOSS(8):将浮雕应用于图像。

IMG_FILTER_MEAN_REMOVAL(9):去除图像上的噪点并产生“粗糙”效果。

IMG_FILTER_SMOOTH(10):使图像更平滑。使用$arg1设置平滑度。

IMG_FILTER_PIXELATE(11):对图像应用像素化效果,使用$arg1设置块大小,使用$arg2设置像素化效果模式。

IMG_FILTER_SCATTER(12):对图像应用散射效果,使用$arg1和$arg2定义效果强度,另外使用$arg3仅应用选择的像素颜色。

$arg1(可选):它指定第一个参数。

$arg2(可选):它指定第二个参数。

$arg3(可选):它指定第三个参数。

$arg4(可选):它指定第四个参数.

php imagefilter() 使用方法

下面的图片为未经过 imagefilter() 函数处理之前的原始图片!

php imagefilter()

1、imagefilter() 反转图片的颜色

$im = imagecreatefrompng('3.png'); 
imagefilter($im, IMG_FILTER_NEGATE); 
header('Content-type:image/png'); 
imagepng($im);

输出结果:

php imagefilter() php反转图片的颜色

2、imagefilter() 修改图像为灰色

$im = imagecreatefrompng('3.png'); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
header('Content-type:image/png'); 
imagepng($im);

输出结果:

php imagefilter() php图片变灰

3、imagefilter() 修改图像的颜色

$im = imagecreatefrompng('3.png'); 
imagefilter($im, IMG_FILTER_COLORIZE, 0, 0, 100); 
header('Content-type:image/png'); 
imagepng($im);

输出结果:

php imagefilter()