本文实例讲述了PHP实现背景图上添加圆形logo图标的方法。分享给大家供大家参考,具体如下:
说一下步骤:
总共分 3 步:
1. 压缩logo 成固定大小的方形图片 2. 将logo 转成圆形logo 3. 将logo与背景图合并
废话不多说,直接上代码:
rush: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程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。