1、给图片加水印的具体做法给图片加水印的具体做法(文字型水印和图片型水印)Test.php文件具体内容:; 2 * 1 =; -1 * 2 =; 258 * 3 =; -1 * 4 =; 258 * 5 =; -20 * 6 =; 2 * 7 =; -20 * /下面的是没用的: * images_width=266 * images_height=29 * font_width=256 * font_height=19 * font_location_x=5 * font_location_y=-15 */ $w = $temp2-$temp0; $h = $temp1-$temp7; /也可以
2、: /$w = $temp2-$temp6; /$h = $temp3-$temp7; unset($temp); $label = 文字的; /检查水印图片的尺寸是否合适(背景图片必须在长宽上都要大于水印图片) if($back_h $h) | $back_w $w) echo 需要加水印的图片的长度或宽度比水印.$label.还小,无法生成水印!; return; /判断选择的水印位置在哪里 switch ($waterPos) case 0:/随机 $posX = rand(0, ($back_w-$w); $posY = rand(0, ($back_h-$h); break; cas
3、e 1:/1为顶端居左 $posX =0; $posY =0; break; case 2:/2为顶端居中 $posX = ($back_w-$w)/2; $posX = 0; break; case 3:/3为顶端居右 $posX = $ground_w - $w; $posY = 0; break; case 4:/4为中部居左 $posX = 0; $posY = ($back_h-$h)/2; break; case 5:/5为中部居中 $posX = ($back_w-$w)/2; $posY = ($back_h-$h)/2; break; case 6:/6为中部居右 $posX
4、 = $back_w-$w; $posY = ($back_h-$h)/2; break; case 7:/7为底端居左 $posX = 0; $posY = $back_h-$h; break; case 8:/8为底端居中 $posX = ($back_w-$w)/2; $posY = $back_h-$h; break; case 9:/9为底端居右 $posX = $back_w-$w; $posY =$back_h-$h; break; default:/随机 $posX = rand(0, ($back_w-$w); $posY = rand(0, ($back_h-$h); br
5、eak; /设定图像的混色模式 imagealphablending($back_image, TRUE); /* * int imagealphablending ( resource image, bool blendmode) * imagealphablending() 允许在真彩色图像上使用两种不同的绘画模式。 * 在混色(blending)模式,alpha 通道色彩成分提供给所有的绘画函数, * 例如 imagesetpixel() 决定底层的颜色应在何种程度上被允许照射透过。作为结果, * GD 自动将该点现有的颜色和绘画的颜色混合,并将结果储存在图像中。 * 结果的像素是不透明
6、的。 * 在非混色模式,绘画颜色连同其 alpha 通道信息一起被拷贝,替换掉目标像素。 * 混色模式在画调色板图像时不可用。如果 blendmode 为 TRUE,则启用混色模式,否则关闭。 * 注: 本函数是 PHP 4.0.6 添加的,需要 GD 2.0.1。 */ if($isWaterImage)/图片型水印 imagecopy($back_image, $water_image, $posX, $posY, 0, 0, $water_w,$water_h);/拷贝水印到目标文件 /* * imagecopy() * imagecopy() 函数用于拷贝图像或图像的一部分,成功返回
7、TRUE ,否则返回 FALSE 。 * 语法: * bool 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 ) * 参数说明: 参数 说明 * dst_im 目标图像 * src_im 被拷贝的源图像 * dst_x 目标图像开始 x 坐标 * dst_y 目标图像开始 y 坐标,x,y同为 0 则从左上角开始 * src_x 拷贝图像开始 x 坐标 * src_y 拷贝图像开始 y 坐标,x,y同为 0 则从左上角开始
8、拷贝 * src_w (从 src_x 开始)拷贝的宽度 * src_h (从 src_y 开始)拷贝的高度 * */ else if(!empty($textColor) & (strlen($textColor)=7) $R = hexdec(substr($textColor,1,2); $G = hexdec(substr($textColor,3,2); $B = hexdec(substr($textColor,5); /* * hexdec() 函数把十六进制转换为十进制。 */ else die(水印文字颜色格式不正确!); imagestring($back_image,$t
9、extFont, $posX, $posY, $waterText, imagecolorallocate($back_image, $R, $G, $B); /* * imagestring - 水平地画一行字符串。 * int imagestring ( resource image, int font, int x, int y, string s, int col ) * imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 座标处(图像的左上角为 0, 0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。 */ /生成水印后
10、的图片 unlink($backImage); /* * unlink() 函数删除文件。 * 若成功,则返回 true,失败则返回 false。 */ switch($back_info2) case 1: imagegif($back_image,$backImage); /* * ImageGIF * 建立 GIF 图型。 * 语法: int imagegif(int im, string filename); * 返回值: 整数 * 函数种类: 图形处理 * 内容说明 * 本函数用来建立一张 GIF 格式图形。参数 im 为使用 ImageCreate() 所建立的图片代码。参数 fi
11、lename 可省略, * 若无本参数 filename,则会将图片指接送到浏览器端,记得在送出图片之前要先送出使用 Content-type: image/gif 的标头字符串 (header) 到浏览器端,以顺利传输图片。 * 若要使用透明背景的 GIF 图,也就是 GIF89a 的格式,需要先使用 ImageColorTransparent() 配置透明背景。 * 本函数产生的 GIF 图,由于有版权的问题,因此在商业上的使用还要多加考量。 */ break; case 2: imagejpeg($back_image,$backImage); break; case 3: imagep
12、ng($back_image,$backImage); break; default:die($errorMsg); /释放内存 if(isset($water_info) unset($water_info); if(isset($water_image) imagedestroy($water_image); unset($back_info); imagedestroy($back_image);/-if(!empty($_FILES) $filename = $_FILESimagefilename; if(copy($_FILESimagefiletmp_name, $filename) $waterImage=logo.jpg;/水印图片路径 imageWaterMake($filename,5,$waterImage); echo ; else echo no; ?文件:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1