水印代码
水印的位置是随机的或固定的。
水印透明设置(图像水印和文本水印都被支持)
文本水印的字体、颜色和大小
图像水印的背景透明性
复制代码代码如下所示:
< PHP
*添加水打印类,支持文本图片水印的透明设置,水印图片背景透明。
*日期:2011-09-27
*作者:
*使用:
* $ obj =新watermask($ imgfilename); / /对象实例化
* $ obj -> $类型= 1; / /类型:0, 1文字水印图像水印
* $ obj -> $透明= 45; / /水印的透明度
* $ obj -> waterstr美元= ''; / /文本水印
* $ obj ->字体美元= 16; / /文本的字体大小
* $ obj ->字体颜色=阵列(2550255美元); / /文本颜色(RGB)水印
* $ obj ->字体= = 'ahgbold美元。TTF '; / /字体文件
*($ obj ->输出); / /输出文件覆盖水印图像输入图像文件
* /
类watermask {
公共类型= 1美元; / / 0类型:图像水印水印、文本水印,1
公众POS = 0美元; / /轴
公共$透明= 45;
公共waterstr美元= ''; / /文本水印
公共字体= 16美元; / /文本的字体大小
公共$字体颜色=阵列(2550255); / /文本颜色(RGB)水印
公共专业= 'ahgbold美元。TTF '; / /字体文件
公共waterimg美元= 'logo。png; / /水印图像
私人srcimg美元= ''; / /添加水印的图片
私有$。
私人water_im美元= ''; / /处理水印图像
私人srcimg_info美元= ''; / /图片信息
私人waterimg_info美元= ''; / /图片水印信息
私人str_w美元= ''; / /水印文字宽度
私人str_h美元= ''; / /水印文字高度
私人$ x = x X水印坐标
私人$ y = ; Y / Y水印坐标
功能__construct($ IMG){ / /析构函数
美元-> srcimg = file_exists($美元IMG)IMG:死(''。$ IMG的源文件不存在!);
}
私有函数(imginfo){ / /得到的图片需要添加水印信息,并加载图片。
美元-> srcimg_info = getimagesize(美元-> srcimg);
开关(美元-> srcimg_info { 2 }){
案例3:
美元->我= imagecreatefrompng(美元-> srcimg);
突破1;
案例2:
美元->我= imagecreatefromjpeg(美元-> srcimg);
突破1;
案例1:
美元->我= imagecreatefromgif(美元-> srcimg);
突破1;
违约:
模具(''。美元-> srcimg格式不正确,只有PNG,JPEG,GIF。);
}
}
私有函数(waterimginfo){ / /得到水印图像信息,并加载图片。
美元-> waterimg_info = getimagesize(美元-> waterimg);
开关(美元-> waterimg_info { 2 }){
案例3:
美元-> water_im = imagecreatefrompng(美元-> waterimg);
突破1;
案例2:
美元-> water_im = imagecreatefromjpeg(美元-> waterimg);
突破1;
案例1:
美元-> water_im = imagecreatefromgif(美元-> waterimg);
突破1;
违约:
模具('watermark图像('。美元-> srcimg。)的格式不正确,只有PNG,JPEG,GIF。);
}
}
私有函数(waterpos){ / /水印算法的位置
开关($ - > POS){
案例0:随机位置
美元-> x =兰特(0美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 });
美元-> Y =兰特(0美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 });
突破1;
案例1:左侧
此$ = x = 0;
此$ = y = 0;
突破1;
案例2:
美元-> x =(美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 }) / 2;
此$ = y = 0;
突破1;
案例3:右边
美元-> x =美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 };
此$ = y = 0;
突破1;
案例4
此$ = x = 0;
美元-> Y =(美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 }) / 2;
突破1;
案例5:
美元-> x =(美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 }) / 2;
美元-> Y =(美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 }) / 2;
突破1;
案例6
美元-> x =美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 };
美元-> Y =(美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 }) / 2;
突破1;
案例7
此$ = x = 0;
美元-> Y =美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 };
突破1;
案例8:
美元-> x =(美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 }) / 2;
美元-> Y =美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 };
突破1;
默认值: /右
美元-> x =美元-> srcimg_info { 0 } -美元-> waterimg_info { 0 };
美元-> Y =美元-> srcimg_info { 1 } -美元-> waterimg_info { 1 };
突破1;
}
}
私有函数waterimg(){
如果(美元-> srcimg_info { 0 } waterimg_info { 0 }美元-> srcimg_info { 1 } waterimg_info { 1 } { | |)
死亡(水印比原作大!);
}
美元-> waterpos();
为减少=新建一个真彩色图像(美元-> waterimg_info { 0 },美元-> waterimg_info { 1 });
imagecopy(美元减少,美元-> IM,0,0,美元->美元-> X,Y,美元-> waterimg_info { 0 },美元-> waterimg_info { 1 });
$ = $;
imagecopy(美元减少,美元-> water_im,0,0,0,0,美元-> waterimg_info { 0 },美元-> waterimg_info { 1 });
拷贝并合并图像的一部分(美元-> IM,削减美元,美元->美元-> X,Y,0,0,美元-> waterimg_info { 0 },美元-> waterimg_info { 1 },$ %);
}
私有函数waterstr(){
美元(美元直接= imagettfbbox ->字体大小,0美元->美元->字体,waterstr);
$ W = ABS($ RECT { 2 }至矩形{ 6 });
$ H = ABS($ RECT { 3 }至矩形{ 7 });
fontheight美元=美元->字体;
美元-> water_im =新建一个真彩色图像($ W $ H);
imagealphablending(美元-> water_im,假);
imagesavealpha(美元-> water_im,真的);
white_alpha = imagecolorallocatealpha美元(美元-> water_im,255255255127);
imagefill(美元-> water_im,0,0,white_alpha美元);
颜色= imagecolorallocate美元(美元-> water_im,美元->字体颜色{ 0 },美元->字体颜色{ 1 },美元->字体颜色{ 2 });
imagettftext(美元-> water_im,美元->字体,0,0,美元->字体大小,颜色美元->美元,美元->字体,waterstr);
美元-> waterimg_info =阵列(0 = 1 = > > $ W $ H);
美元-> waterimg();
}
函数输出(){
美元-> imginfo();
如果(美元->类型= = 0){
美元-> waterstr();
{ }人
美元-> waterimginfo();
美元-> waterimg();
}
开关(美元-> srcimg_info { 2 }){
案例3:
imagepng(美元-> IM,美元-> srcimg);
突破1;
案例2:
imagejpeg(美元-> IM,美元-> srcimg);
突破1;
案例1:
imagegif(美元-> IM,美元-> srcimg);
突破1;
违约:
模具('add水印失败!);
打破;
}
销毁一图像(美元-> IM);
销毁一图像(美元-> water_im);
}
}
>