php图片添加水印(先对水印图片进行缩放) -j9九游会真人游戏第一品牌

php对图片添加水印,并对水印图片先进行缩放

演示效果图如下

img

主要函数:

/*
* 图片添加水印
* @param string $picsrc 图片地址
* @param string $watermarksrc 水印地址
* @param int $watermark_x 水印缩放后图片的最大宽度
* @param int $watermark_y 水印缩放后图片的最大高度
* @param string $alpha 水印透明度
* @param string $begin_x 水印在图片开始的 x 坐标
* @param string $begin_y 水印在图片开始的 y 坐标
* @param string $savepath 生成图片的保存地址(保存地址为空时直接输出图片,为路径时返回保存路径)
*/
public function imgaddwatermark($picsrc,$watermarksrc,$watermark_x,$watermark_y,$alpha = 100,$begin_x = 0,$begin_y = 0,$savepath=''){
$watermarkinfo = getimagesize($watermarksrc); //获取水印图片的基本信息
$w = $watermarkinfo[0];//获取宽度
$h = $watermarkinfo[1];//获取高度
//获取图片的类型并为此创建对应图片资源
switch($watermarkinfo[2]){
  case 1: //gif
    $watermark_im = imagecreatefromgif($watermarksrc);
    break;
  case 2: //jpg
    $watermark_im = imagecreatefromjpeg($watermarksrc);
    break;
  case 3: //png
    $watermark_im = imagecreatefrompng($watermarksrc);
    break;
  default:
    die("图片类型错误!");
}
//计算缩放比例
if(($watermark_x/$w)>($watermark_y/$h)){
  $b = $watermark_y/$h;
}else{
  $b = $watermark_x/$w;
}
//计算出缩放后的尺寸
$nw = floor($w*$b);
$nh = floor($h*$b);
//创建一个新的图像源(目标图像)
$new_watermark_im = imagecreatetruecolor($nw,$nh);
//执行等比缩放
imagecopyresampled($new_watermark_im,$watermark_im,0,0,0,0,$nw,$nh,$w,$h);
// 缩放后的水印图片 $new_watermark_im
//得到原始图片信息
$picsrc_info = getimagesize($picsrc);
switch($picsrc_info[2]){
  case 1: //gif
    $picsrc_im = imagecreatefromgif($picsrc);
    break;
  case 2: //jpg
    $picsrc_im = imagecreatefromjpeg($picsrc);
    break;
  case 3: //png
    $picsrc_im = imagecreatefrompng($picsrc);
    break;
  default:
    die("图片类型错误!");
}
//合并水印图片
imagecopymerge($picsrc_im,$new_watermark_im,$begin_x,$begin_y,0,0,$watermark_x,$watermark_y,$alpha);
//输出合并后水印图片
if($savepath==''){//直接输出图片
  header("content-type: image/jpeg");
  imagejpeg($picsrc_im);
  imagedestroy($picsrc_im);
  imagedestroy($new_watermark_im);
}else{//保存图片
  $picinfo = pathinfo($picsrc);//解析源图像的名字和路径信息
  //print_r($picinfo);exit;
  // 检查路径是否存在,如不存在则创建
  if (!is_dir($savepath)){
    //第三个参数是“true”表示能创建多级目录,iconv防止中文目录乱码
    $res=mkdir(iconv("utf-8", "gbk", $savepath),0777,true);
  } 
  $save_pic_name = $savepath."/".microtime(true).'.'.$picinfo["extension"];
  imagejpeg($picsrc_im,$save_pic_name);
  imagedestroy($picsrc_im);
  imagedestroy($new_watermark_im);
  return $save_pic_name;
}
}

测试:

$picsrc = "https://pane.oss-cn-beijing.aliyuncs.com/zatu/fj/timg.jpg";
$watermarksrc = "https://pane.oss-cn-beijing.aliyuncs.com/工作室/图标素材/xcxeyunzhu.jpg";
$watermark_x = 100;
$watermark_y = 100;
$alpha = 100;
$begin_x = 0;
$begin_y = 0;
$savepath = "";
$result = $this->imgaddwatermark($picsrc,$watermarksrc,$watermark_x,$watermark_y,$alpha,$begin_x ,$begin_y ,$savepath);
echo ($result);

发表评论 登录

目前评论:1

  • avatar ii 2019-07-29 15:07:58

    mark马克