php实现背景图上添加圆形logo图标的方法

本文实例讲述了PHP实现背景图上添加圆形logo图标的方法分享给大家供大家参考,具体如下:

说一下步骤:

总共分 3 步:

1. 压缩logo 成固定大小的方形图片 2. 将logo 转成圆形logo 3. 将logo与背景图合并

废话不多说,直接上代码

PHP;"> load->library('curl'); } /** * @todo : 本函数用于 将方形的图片压缩后 * 再裁减成圆形 做成logo * 与背景图合并 * @return 返回url */ public function index(){ //头像 $headimgurl = 'a.jpg'; //背景图 $bgurl = './aa.png'; $imgs['dst'] = $bgurl; //第一步 压缩图片 $imggzip = $this->resize_img($headimgurl); //第二步 裁减成圆角图片 $imgs['src'] = $this->test($imggzip); //第三步 合并图片 $dest = $this->mergerImg($imgs); } public function resize_img($url,$path='./'){ $imgname = $path.uniqid().'.jpg'; $file = $url; list($width,$height) = getimagesize($file); //获取原图尺寸 $percent = (110/$width); //缩放尺寸 $newwidth = $width * $percent; $newheight = $height * $percent; $src_im = imagecreatefromjpeg($file); $dst_im = imagecreatetruecolor($newwidth,$newheight); imagecopyresized($dst_im,$src_im,$newwidth,$newheight,$width,$height); imagejpeg($dst_im,$imgname); //输出压缩后的图片 imagedestroy($dst_im); imagedestroy($src_im); return $imgname; } //第一步生成圆角图片 public function test($url,$path='./'){ $w = 110; $h=110; // original size $original_path= $url; $dest_path = $path.uniqid().'.png'; $src = imagecreatefromstring(file_get_contents($original_path)); $newpic = imagecreatetruecolor($w,$h); imagealphablending($newpic,false); $transparent = imagecolorallocatealpha($newpic,127); $r=$w/2; for($x=0;$x<$w;$x++) for($y=0;$y<$h;$y++){ $c = imagecolorat($src,$x,$y); $_x = $x - $w/2; $_y = $y - $h/2; if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){ imagesetpixel($newpic,$y,$c); }else{ imagesetpixel($newpic,$transparent); } } imagesavealpha($newpic,true); // header('Content-Type: image/png'); imagepng($newpic,$dest_path); imagedestroy($newpic); imagedestroy($src); unlink($url); return $dest_path; } //PHP 合并图片 public function mergerImg($imgs,$path='./') { $imgname = $path.rand(1000,9999).uniqid().'.jpg'; list($max_width,$max_height) = getimagesize($imgs['dst']); $dests = imagecreatetruecolor($max_width,$max_height); $dst_im = imagecreatefrompng($imgs['dst']); imagecopy($dests,$dst_im,$max_width,$max_height); imagedestroy($dst_im); $src_im = imagecreatefrompng($imgs['src']); $src_info = getimagesize($imgs['src']); imagecopy($dests,270,202,$src_info[0],$src_info[1]); imagedestroy($src_im); // var_dump($imgs);exit; // header("Content-type: image/jpeg"); imagejpeg($dests,$imgname); // unlink($imgs['dst']); unlink($imgs['src']); return $imgname; } }

结果展示:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...