1: 面向过程的编写方法
//指定图片路径$src = '001.png';//获取图片信息$info = getimagesize($src);//获取图片扩展名$type = image_type_to_extension($info[2],false);//动态的把图片导入内存中$fun = imagecreatefrom{$type};$image = $fun('001.png');//指定字体颜色$col = imagecolorallocatealpha($image,255,255,255,50);//指定字体内容$content = 'helloworld';//给图片添加文字imagestring($image,5,20,30,$content,$col);//指定输入类型header('content-type:'.$info['mime']);//动态的输出图片到浏览器中$func = image{$type};$func($image);//销毁图片imagedestroy($image);
2:面向对象的实现方法
class image_class { private $image; private $info;/*** @param $src:图片路径* 加载图片到内存中*/ function __construct($src){$info = getimagesize($src);$type = image_type_to_extension($info[2],false);$this -> info =$info;$this->info['type'] = $type;$fun = imagecreatefrom .$type;$this -> image = $fun($src); }/*** @param $fontsize: 字体大小* @param $x: 字体在图片中的x位置* @param $y: 字体在图片中的y位置* @param $color: 字体的颜色是一个包含rgba的数组* @param $text: 想要添加的内容* 操作内存中的图片,给图片添加文字水印*/ public function fontmark($fontsize,$x,$y,$color,$text){$col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);imagestring($this->image,$fontsize,$x,$y,$text,$col); } /** 输出图片到浏览器中*/ public function show(){header('content-type:' . $this -> info['mime']);$fun='image' . $this->info['type'];$fun($this->image); }/*** 销毁图片*/ function __destruct(){imagedestroy($this->image); }}//对类的调用$obj = new image_class('001.png');$obj->fontmark(20,20,30,array(255,255,255,60),'hello');$obj->show();
3.支持以图片和文字两种方式给图片添加水印。图片支持gif,png,jpg三种格式,水印图片支持png和gif
function setwater($imgsrc,$markimg,$marktext,$textcolor,$markpos,$fonttype,$marktype){$srcinfo = @getimagesize($imgsrc); $srcimg_w = $srcinfo[0]; $srcimg_h = $srcinfo[1];switch ($srcinfo[2]){case 1:$srcim =imagecreatefromgif($imgsrc);break;case 2:$srcim =imagecreatefromjpeg($imgsrc);break;case 3:$srcim =imagecreatefrompng($imgsrc);break;default:die(不支持的图片文件类型);exit;}if(!strcmp($marktype,img)) {if(!file_exists($markimg) || empty($markimg)){return;}$markimginfo = @getimagesize($markimg);$markimg_w = $markimginfo[0];$markimg_h = $markimginfo[1];if($srcimg_w
参数说明:
$imgsrc:目标图片,可带相对目录地址,
$markimg:水印图片,可带相对目录地址,支持png和gif两种格式,如水印图片在执行文件mark目录下,可写成:mark/mark.gif
$marktext:给图片添加的水印文字
$textcolor:水印文字的字体颜色
$markpos:图片水印添加的位置,取值范围:0~9
0:随机位置,在1~8之间随机选取一个位置
1:顶部居左 2:顶部居中 3:顶部居右 4:左边居中
5:图片中心 6:右边居中 7:底部居左 8:底部居中 9:底部居右
$fonttype:具体的字体库,可带相对目录地址
$marktype:图片添加水印的方式,img代表以图片方式,text代表以文字方式添加水印
4.给图片加文字水印的方法