A-A+

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

2016年11月23日 PHP博文 暂无评论

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

说一下步骤:

总共分 3 步:

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

废话不多说,直接上代码:

<?php/** * 作者:friker * 开发时间:20160516 * 功能:图片处理 * */class ImageController extends CI_Controller{  public function __construct()  {    parent::__construct();    date_default_timezone_set('Asia/Shanghai');    error_reporting( E_ALL&~E_NOTICE&~E_WARNING);    $this->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, 0, 0, 0, 0, $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 = http://www.jb51.net/article/imagecreatefromstring(file_get_contents($original_path));    $newpic = imagecreatetruecolor($w,$h);    imagealphablending($newpic,false);    $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 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,$x,$y,$c);        }else{          imagesetpixel($newpic,$x,$y,$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,0,0,0,0,$max_width,$max_height);    imagedestroy($dst_im);    $src_im = imagecreatefrompng($imgs['src']);    $src_info = getimagesize($imgs['src']);    imagecopy($dests,$src_im,270,202,0,0,$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基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

标签:

Copyright © E网新时代 保留所有权利.   Theme  Ality站点地图
查询次数: 18
粤ICP备14073293号-1

用户登录

分享到: