当前位置: 首页 > news >正文

PHP 方头像转为圆图

业务需要把创建海报上的用户头像由方形转为圆形,前端的样式设置不能用。

故采用GD的函数来对方图进行裁剪处理为圆图。

 

目录

裁剪函数

本地图片

远程图片

效果

参考文章

总结


裁剪函数

从网上找的一个裁剪图片的函数。

代码如下:

/*
* 将图片切成圆角
*/
function drawCircle($imgPath){$ext     = pathinfo($imgPath);$src_img = null;switch ($ext['extension']) {case 'jpg':$src_img = imagecreatefromjpeg($imgPath);break;case 'png':$src_img = imagecreatefrompng($imgPath);break;}$wh  = getimagesize($imgPath);$w   = $wh[0];$h   = $wh[1];$w   = min($w, $h);$h   = $w;$img = imagecreatetruecolor($w, $h);// 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息imagesavealpha($img, true);// 拾取一个完全透明的颜色,最后一个参数127为全透明$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);imagefill($img, 0, 0, $bg);$r   = $w / 2; //圆半径for ($x = 0; $x < $w; $x++) {for ($y = 0; $y < $h; $y++) {$rgbColor = imagecolorat($src_img, $x, $y);if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}}}// 资源内容 resource(5) of type (gd)return $img;
}

本地图片

使用本地图片作为裁剪的源文件,需要图片文件的绝对路径作为参数。

代码如下:

// 绝对路径
$info = drawCircle(dirname(__FILE__).'/img/2.jpg');
//var_dump($info); // resource(5) of type (gd)// 直接图片显示
header('Content-Type: image/png');
imagepng($info);

远程图片

如果使用的是远程的网络图片,比如https://xxx.img文件时。

直接使用会无法读取到图片内容。

就需要变动一下处理:先下载图片到本地,然后图片绝对路径。

代码如下:

// 如果是网络图片 需要下载本地后 换成绝对路径
$fileName = './1.jpg';
file_put_contents($fileName, file_get_contents('https://t9.baidu.com/it/u=2906392343,593562570&fm=217&app=126&size=f242,150&n=0&f=JPEG&fmt=auto?s=1338748239B30A887D51FE0E030040E5&sec=1732986000&t=4418c79f8c027c772f1e5c55284d524e'));
$info = drawCircle(dirname(__FILE__) . ltrim($fileName, '.'));
//var_dump($info); // resource(5) of type (gd)// 直接图片显示
header('Content-Type: image/png');
imagepng($info);

效果

参考文章

php 利用GD库将正方形图片变成圆形_php gd把图片变成圆形-CSDN博客

总结

使用PHP GD库函数对方图进行裁剪处理为圆图

http://www.lryc.cn/news/495883.html

相关文章:

  • centos 7 离线安装postgis插件
  • pyinstaller打包的时候将ffmpeg也加进包中(包括打包文件夹的方法)
  • JVM面试知识点1
  • wordpress
  • Day33 动态规划part02
  • 渗透测试之Web基础之Linux病毒编写——泷羽sec
  • jmeter基础07_组件的层级
  • Nginx反向代理和负载均衡配置
  • 【379】基于springboot的防疫物资管理信息系统
  • Linux 各个目录作用
  • 【Linux】文件操作的艺术——从基础到精通
  • java中的运算符
  • 全面解析 C++ STL 中的 set 和 map
  • css:怎么设置div背景图的透明度为0.6不影响内部元素
  • Kubernetes ConfigMaps
  • 前端热门面试题目[一](HTML、CSS、Javascript、Node、Vue、React)
  • Swift 宏(Macro)入门趣谈(五)
  • ES6 Set、Map、WeakSet、WeakMap 四者辨析与实战应用详解
  • 【数据结构】哈希表实现
  • Verilog的线与类型与实例化模块
  • 芯片测试-RF中的S参数,return loss, VSWR,反射系数,插入损耗,隔离度等
  • 强化学习的几个主要方法(策略梯度、PPO、REINFORCE实现等)(上)
  • Git远程仓库操作
  • GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记
  • 什么是VISUAL STUDIO CODE (V S CODE)
  • 2024年09月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析
  • C++初阶——动态内存管理
  • 如何查看阿里云ddos供给量
  • MySQL中的事务隔离全详解
  • 异常--C++