前景说明:有时候我们获取的微信头像是方形的,我们想把他弄成圆形的,我们可以通过PHP来实现,当然也可以同前端JavaScript来实现。1、转换圆形图片方法:;/*;;;* @fun 图片转换成圆形png,传入源路径和转换后的路
前景说明:有时候我们获取的微信头像是方形的,我们想把他弄成圆形的,我们可以通过PHP来实现,当然也可以同前端JavaScript来实现。
1、转换圆形图片方法:
/*
* @fun 图片转换成圆形png,传入源路径和转换后的路径,均用相对于当前程序文件的路径
* @memo 对于非正方形的图片,以短边作为图片的直径
* @param string $src 源路径
* @param string $dst 转换后的路径
*/
public function yuan_img($src) {
//获取原图尺寸,并设置新图片的宽度和高度
list($w, $h) = getimagesize($src);
if( $w > $h ){
$w = $h;
}else{
$h = $w;
}
$oimgSrc = imagecreatefromstring(file_get_contents($src));
$oimgDst = imagecreatetruecolor($w, $h);
imagealphablending($oimgDst,false);
$transparent = imagecolorallocatealpha($oimgDst, 0, 0, 0, 127);
$r=$w/2;
for($x=0;$x<$w;$x++){
for($y=0;$y<$h;$y++){
$c = imagecolorat($oimgSrc,$x,$y);
$_x = $x - $w/2;
$_y = $y - $h/2;
if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){
imagesetpixel($oimgDst,$x,$y,$c);
}else{
imagesetpixel($oimgDst,$x,$y,$transparent);
}
}
}
$str = uniqid(mt_rand(),1);
$file='/upload/ai/code/user/wx_tx/'.date('Ymd',time()).'/';
$file2=$_SERVER['DOCUMENT_ROOT'].$file;
if(!is_dir($file2))//检测目录是否存在
{
mkdir($file2,0777,true);
}
imagesavealpha($oimgDst, true);
imagepng($oimgDst, $file2.md5($str).'.png');
imagedestroy($oimgDst);
imagedestroy($oimgSrc);
return $file.md5($str).'.png';
}
2、使用方法:
$this->yuan_img($res['avatar']))
注意:这里图片一定要真实项目图片
沃梦达教程
本文标题为:PHP如何将头像图片转换圆形图片
猜你喜欢
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- Laravel balde模板文件中判断数据为空方法 2023-08-30
- laravel通用化的CURD的实现 2023-03-17
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
- php微信公众号开发之秒杀 2022-11-23
- PHP中PDO事务处理操作示例 2022-10-15
- 用nohup命令实现PHP的多进程 2023-09-02