这篇是关于修改图片的效果,主要还是用到php中的GD库中的函数,没想到php还有这凶残能力,出乎我的预料。
先看代码upload_image.php,主要是一个上传控件,用来选择图片
然后是上传和处理图片的逻辑check_image.php
Here is your pic! Your image has been saved!
Here is your pic! So how does it feel to be famous?
Here is the picture you just uploaded to your servers:
Image save as: | |
Height: | |
Widht: | |
Upload date: |
You may apply a special effect to your image from the list of option below. Note:saving an image with any of the filters applied can be undone
最后是一个预览效果的页面image_effect.php
第二个image_check.php有点乱,在这个页面中有上传图片,处理图片,还有预览图片的部分逻辑,注意下面这段
如果是上传直接访问图片,如果是预览则从image_effect.php中读取图片,这里是从内存中读取图片并根据选择的处理效果来展示图片。如下
switch($effect){ case IMG_FILTER_NEGATE: imagefilter($image , IMG_FILTER_NEGATE); break; case IMG_FILTER_GRAYSCALE: imagefilter($image , IMG_FILTER_GRAYSCALE); break; case IMG_FILTER_EMBOSS: imagefilter($image , IMG_FILTER_EMBOSS); break; case IMG_FILTER_GAUSSIAN_BLUR: imagefilter($image , IMG_FILTER_GAUSSIAN_BLUR); break; }
当使用imagefilter方法处理图片之后会把图片输出到页面,这里要注意imagejpeg方法的第二个参数是空字符串,这样它就不会写入到硬盘中了,如果第二个参数设置了会覆盖原有的图片,这样可以让用户在保存图片之前随意的预览效果,如下:
header('Content-Type:image/jpeg');imagejpeg($image , '' , 100);
在check_image.php中有调用到类似的方法,但是这里指定了第二个参数,就是用来保存图片的:
imagejpeg($image , $dir.'/'.$_POST['id'].'.jpg' , 100);
注意这里哦我们只写了三种处理效果,这个只是所有枚举中的一部分,我们来看所有的处理方式:
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 设定柔滑级别。是不是很惊艳,php很强大的。