工作中,在一个内容管理系统的图片添加水印功能中,发现给图片添加水印后,图片会很模糊。查找原因,发现是与生成的添加水印后生成的图片的质量有关。顺藤摸瓜,了解了一下添加水印的原理。
主要是用到一下几个函数:
getimagesize() 获取上传图片的大小;
imagecreatetruecolor ( int x_size, int y_size ) 建一个大小为 x_size
和 y_size
的真彩色图像
imagecolorallocate ( resource image, int red, int green, int blue ) 为一幅图像分配颜色
imagefill ( resource image, int x, int y, int color ) 在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。
imagecreatefromgif ( string filename )
imagecreatefromgif() 返回图像标识符,代表了从给定的文件名(gif格式的图片)取得的图像
int imagestring(int im, int font, int x, int y, string s, int col);返回值: 整数 函数种类: 图形处理b 内容说明:本函数在图片上绘出水平的横式字符串。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y 为字符串起点坐标。字符串的内容放在参数 s 上。参数 col 表示字符串的颜色。
imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h ) 即 int imagecopy (截取后图片,截取目标图片,将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上
imagejpeg ( resource image [, string filename [, int quality]] ) 从 image
图像以 filename
为文件名创建一个 JPEG 图像。image
参数是 imagecreatetruecolor() 函数的返回值。
注:创建的添加水印的图片的质量就是上面的 quality 的值
quality
为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。 如果想输出渐进式 JPEG,需要用 imageinterlace() 函数将隔行扫描比特置位。 )
imagedestroy ( resource image ) 销毁图像, 释放与 image
关联的内存。image
是由图像创建函数返回的图像标识.