当前位置: 首页 > 后端技术 > PHP

php生成文字水印和图片水印

时间:2023-03-29 17:55:31 PHP

/**制作图片水印*@paramstring$old_img原图地址*@paramstring$water水印图片地址*@paramint$offset_x水平偏移*@paramint$offset_y垂直偏移*@returnstring新图片地址*@authorzhao<2019-11-4>*/privatefunctionmakeImgWater($ori_img,$water_img,$offset_x,$offset_y){$original=getimagesize($ori_img);//获取图像信息数组$watermark=getimagesize($water_img);//$original[2]为图片类型,其中1表示gif,2表示jpg,3表示png$s_original=$this->imgCreateFrom($ori_img,$original[2]);//写入两张图片到画布$s_watermark=$this->imgCreateFrom($water_img,$watermark[2]);//dst_im目标图片链接资源。src_img源图像链接资源。dst_x目标点的x坐标。dst_y终点的y坐标。src_x源点的x坐标。src_y//源点的y坐标。src_w源宽度。src_h源高度。//打上图片水印,在画布上0,0处绘制图片,即取imagecopy($s_original,$s_watermark,$offset_x,$offset_y,0,0,$watermark[0],$watermark[1]);$up_path=ROOT_PATH。'公共/上传/文件/'。日期(“Y-m-d”);如果(!is_dir($up_path)){mkdir($up_path);}$img_name=time().'.jpg';//图片名称,防止与文字水印图片冲突$new_img=$up_path.'/'。$img_name;//图片名称$loop=imagejpeg($s_original,$new_img);//生成一张新图片(jpg格式),如果imagepng可以生成png格式if($loop){//上传到服务器,返回新图片地址return$new_img;}}/***制作文字水印*@paramstring$ori_img原图地址*@paramstring$water_text[<水印文字>]*@paramint$font_size[<字体大小>]*@paramint$pos_x[<水平偏移>]*@paramint$pos_y[<垂直偏移>]*@paramint$tilt[<文本倾斜,默认为0>]*@returnstring新图片URL*@authorzhao<[<2019-10-5>]>*/privatefunctionmakeTextWater($ori_img,$water_text,$font_size,$pos_x,$pos_y,$tilt=0){$original=getimagesize($ori_img);//获取原始图像信息数组//$original[2]为图片类型,其中1表示gif,2表示jpg,3表示png$s_original=$this->imgCreateFrom($ori_img,$original[2]);//写入图片intoCanvas//文本水印部分$color=imagecolorallocate($s_original,0,0,0);//为图像分配颜色0,0,0,默认黑色//打印文本水印imagettftext($s_original,$font_size,$tilt,$pos_x,$pos_y,$color,ROOT_PATH.'public/static/assets/fonts/MSYH.TTC',$water_text);$up_path=ROOT_PATH.'public/uploads/file/'.date("Y-m-d");如果(!is_dir($up_path)){mkdir($up_path);}$img_name=时间()。'.jpg';~~~~$new_img=$up_path.'/'。$img_name;//图片名称$loop=imagejpeg($s_original,$new_img);//生成一张新图片(png格式)if($loop){//返回图片地址return$new_img;}}/***根据文件类型创建文件newcanvas*/privatefunctionimgCreateFrom($img_src,$val){switch($val){case1:$img=imagecreatefromgif($img_src);休息;案例2:$img=imagecreatefromjpeg($img_src);休息;案例3:$img=imagecreatefrompng($img_src);休息;}return$img;}用PHP实现图片水印很简单,毕竟有封装好的系统函数可以直接调用。并且可以多次调用,达到给图片添加多个水印的效果,比如在foreach循环中多次调用文字水印方法,每次传递不同的坐标和文字,将生成的图片地址作为原始地址返回下次调用的图像地址。您可以在图片的不同位置添加水印。图片水印同理。