温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP如何实现图片等比缩放和Logo水印功能

发布时间:2021-06-22 14:40:28 来源:亿速云 阅读:211 作者:小新 栏目:开发技术

这篇文章主要介绍了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");

感谢你能够认真阅读完这篇文章,希望小编分享的“PHP如何实现图片等比缩放和Logo水印功能”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI