今天因为公司小程序要做一个用户海报,需要水印+二维码+头像。  (头像必须要圆的)

因为记得之前好像做过一次,但是实在想不起来,就在网上找了几个试了试,  最后选了一个,原文地址:

https://segmentfault.com/q/1010000007501202

先给大家说一下逻辑。  头像的话,需要先缩略一下。再进行png圆形处理。下面是两个方法的代码:

/**

* $url:是头像路径,$path:是保存路径(../是根目录)

**/

public function resize_img($url,$path='../'){ //先缩略
        $imgname = $path.uniqid().'.jpg';
        $file = $url;
        list($width, $height) = getimagesize($file); //获取原图尺寸
        $percent = (140/$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 = 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);  
        imagepng($newpic, $dest_path);  
        imagedestroy($newpic);  
        imagedestroy($src);  
       // unlink($url);  
        return $dest_path;  
    }

是要分两个步骤的。

经过第二个方法返回的图片就是 下图的 圆形png头像。

TP5 使用GD库将一个头像缩略并处理成圆形png相关推荐

  1. 使用halcon将一个圆上的点拟合成圆形并且求出圆心

    我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置.我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心. 使用halcon实现 publi ...

  2. PHP用gd库给图片添加水印,php用GD库给图片添加水印

    php用GD库给图片添加文字水印,整个代码比较简单,DEMO如下: /*打开图片*/ //1.配置图片路径 $src = "aeroplane.jpg"; //2.获取图片信息 $ ...

  3. php gd库 圆形头像,基于 GD 库生成圆形头像

    基于 GD 库生成圆形头像 laravel 友好的图片处理库 Intervention Image 可以绘制圆形(circle()), 但是好像并不能将即存的图片裁剪成圆形, 这里提供一个基于 GD ...

  4. PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现

    PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现 之前记录过一篇文章,不过那只是简单将二维码合成到海报中去,这次还要合成头像,而且是圆形.所需要素材就不一一列举,直接代码吧 1.先获取用 ...

  5. PHP面向对象——GD库实现图片水印和缩略图

    今天的实现目标就是使用GD库完成对图片加水印和图 片缩略图两个功能 动身前逻辑准备 属性:路径功能:构造方法生成水印的方法获取图片信息获取位置信息(123 456 789)创建图片资源合并图片资源重新 ...

  6. IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]

    IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版] IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin ...

  7. php 将图片截取成3张,【php】php gd库怎么把一个图片裁剪成圆形的

    微信的头像现在要加水印到一张图片上 弄成 圆形的 怎么裁剪呢 Imagick提供的有 gd库 怎么做呢 因为要在微信中生成这个图片发送给用户 所以必须是生成这样的图片的 css的border-radi ...

  8. 商 务 英 语 常 用 缩 略 语 表

    商 务 英 语 常 用 缩 略 语 表 缩 写 全 称 中 文 a accepted 承兑 A&C addenda and corrigenda 补遗和勘误 A.C.V actual cash ...

  9. xp php mysql_WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPW

    一.准备工作: 1.安装好WindowsXP及IIS,这是最基本的要求,就不多说了.可以在浏览器中打开:http://lzw.me/,如能看到以下画面,就说明IIS安装成功了.注意:此时的IIS还未经 ...

最新文章

  1. 算法--------字符串中的第一个唯一字符(Java 版本)
  2. static用法解析---java语言
  3. iftop是一个很好用的实时流量监测程序,跟使用iftop查看linux连接进程占用的实时流量...
  4. go 语言系列(二)基本数据类型和操作符
  5. c linux time微秒_qt linux系统获取当前时间(精确到毫秒、微秒)-Go语言中文社区...
  6. 这两种printf()函数重定向方法,太实用了
  7. java王大拿谢大脚_《乡村爱情1》:“王大拿”赵本山有3大亮点,追谢大脚根本不算啥...
  8. 基于Mind+的NB-IOT自动获取时间和位置
  9. 重庆三峡学院计算机英语期末考试,英语语言学试题B卷及答案(重庆三峡学院)
  10. Linux系统瓶颈排查
  11. 【专利】实用新型专利设计模板
  12. 自己组装电脑后怎么装Win10系统教学
  13. plotyy函数_matlab中plotyy函数加入双y轴说明的方法
  14. Ubuntu论坛遭到入侵 用户数据泄露
  15. 拖拉机服务器不稳定,手扶拖拉机机油指示不稳定现象分析
  16. AVR单片机与C语言的一些入门简要概述
  17. [转载]JS和AS交互 作者:ludanlove
  18. 【单片机】时钟及温度的显示
  19. “35岁危机”不再,算法岗应届生平均月薪超3.2万,人工智能行业掀抢人大战!...
  20. 怎么看vray渲染进度_【3dmax疑难问题】渲染有进度条但渲染窗口不见了

热门文章

  1. UEFI使用rEFInd引导Win10+Deepin双系统
  2. windows10下安装refind
  3. 如何访问NetApp E系列存储的CLI命令行
  4. vue2.0引入腾讯地图
  5. LeetCode T35_searchInsert
  6. android拦截js弹窗,C++ 拦截 CEF 的JS 弹窗(Alert, Confirm),改造为C++的对话框
  7. 2018年APP应用上架苹果商店的详细步骤整理:
  8. 高性能游戏蓝牙耳机有哪些?手游游戏蓝牙耳机推荐
  9. 挣脱电子锁链 互联网信息安全如何保障
  10. springboot创建父子工程