首页 > 开发 > PHP > 正文

PHP实现图片的等比缩放和Logo水印功能示例

2024-05-04 22:47:49
字体:
来源:转载
供稿:网友

本文实例讲述了PHP实现图片的等比缩放和Logo水印功能。分享给大家供大家参考,具体如下:

/** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int $maxy 缩放后图片的最大高度 * @param string $pre 缩放后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg */function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){  $info = getimageSize($picname); //获取图片的基本信息  $w = $info[0];//获取宽度  $h = $info[1];//获取高度  //获取图片的类型并为此创建对应图片资源  switch($info[2]){    case 1: //gif      $im = imagecreatefromgif($picname);      break;    case 2: //jpg      $im = imagecreatefromjpeg($picname);      break;    case 3: //png      $im = imagecreatefrompng($picname);      break;    default:      die("图片类型错误!");  }  //计算缩放比例  if(($maxx/$w)>($maxy/$h)){    $b = $maxy/$h;  }else{    $b = $maxx/$w;  }  //计算出缩放后的尺寸  $nw = floor($w*$b);  $nh = floor($h*$b);  //创建一个新的图像源(目标图像)  $nim = imagecreatetruecolor($nw,$nh);  //执行等比缩放  imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);  //输出图像(根据源图像的类型,输出为对应的类型)  $picinfo = pathinfo($picname);//解析源图像的名字和路径信息  $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];  switch($info[2]){    case 1:      imagegif($nim,$newpicname);      break;    case 2:      imagejpeg($nim,$newpicname);      break;    case 3:      imagepng($nim,$newpicname);      break;  }  //释放图片资源  imagedestroy($im);  imagedestroy($nim);  //返回结果  return $newpicname;}//测试://echo imageUpdateSize("./images/bg.jpg",200,200,"ss_"); // ./images/s_bg.jpg
/** * 为一张图片添加上一个logo图片水印(以保存的方式实现) * @param string $picname 被处理图片源 * @param string $logo 水印图片 * @param string $pre 处理后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg */function imageUpdateLogo($picname,$logo,$pre="n_"){  $picnameinfo = getimageSize($picname); //获取图片源的基本信息  $logoinfo = getimageSize($logo); //获取logo图片的基本信息  //var_dump($logoinfo);  //根据图片类型创建出对应的图片源  switch($picnameinfo[2]){    case 1: //gif      $im = imagecreatefromgif($picname);      break;    case 2: //jpg      $im = imagecreatefromjpeg($picname);      break;    case 3: //png      $im = imagecreatefrompng($picname);      break;    default:      die("图片类型错误!");  }  //根据logo图片类型创建出对应的图片源  switch($logoinfo[2]){    case 1: //gif      $logoim = imagecreatefromgif($logo);      break;    case 2: //jpg      $logoim = imagecreatefromjpeg($logo);      break;    case 3: //png      $logoim = imagecreatefrompng($logo);      break;    default:      die("logo图片类型错误!");  }  //执行图片水印处理  imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);  //输出图像(根据源图像的类型,输出为对应的类型)  $picinfo = pathinfo($picname);//解析源图像的名字和路径信息  $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];  switch($picnameinfo[2]){    case 1:      imagegif($im,$newpicname);      break;    case 2:      imagejpeg($im,$newpicname);      break;    case 3:      imagepng($im,$newpicname);      break;  }  //释放图片资源  imagedestroy($im);  imagedestroy($logoim);  //返回结果  return $newpicname;}//测试echo imageUpdateLogo("./images/bg2.jpg","./images/s_1.png");            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表