php 图片 圆角,php图片生成圆角

该篇博客分享了如何使用PHP进行图片圆角处理的方法,通过创建一个新图像并利用图像处理函数imagecreatetruecolor、imagesavealpha、imagecolorallocatealpha等,将源图片的四个角落转换为指定半径的圆角。代码示例中,根据图片类型读取源图片,并通过循环判断每个像素位置是否在圆角范围内,从而实现圆角效果。
摘要由CSDN通过智能技术生成

本篇文章的内容是关于PHP图片生成圆角,现在分享给大家,有需要的朋友可以参考一下

/**

* @param string $imgpath 源图片路径

* @param integer $radius 圆角半径长度默认为15,处理成圆型

* @return [type] [description]

*/

function radius_img($imgpath = './t.png', $radius = 15) {

$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];

// $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;

$img = imagecreatetruecolor($w, $h);

//这一句一定要有

imagesavealpha($img, true);

//拾取一个完全透明的颜色,最后一个参数127为全透明

$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);

imagefill($img, 0, 0, $bg);

$r = $radius; //圆 角半径

for ($x = 0; $x < $w; $x++) {

for ($y = 0; $y < $h; $y++) {

$rgbColor = imagecolorat($src_img, $x, $y);

if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {

//不在四角的范围内,直接画

imagesetpixel($img, $x, $y, $rgbColor);

} else {

//在四角的范围内选择画

//上左

$y_x = $r; //圆心X坐标

$y_y = $r; //圆心Y坐标

if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {

imagesetpixel($img, $x, $y, $rgbColor);

}

//上右

$y_x = $w - $r; //圆心X坐标

$y_y = $r; //圆心Y坐标

if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {

imagesetpixel($img, $x, $y, $rgbColor);

}

//下左

$y_x = $r; //圆心X坐标

$y_y = $h - $r; //圆心Y坐标

if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {

imagesetpixel($img, $x, $y, $rgbColor);

}

//下右

$y_x = $w - $r; //圆心X坐标

$y_y = $h - $r; //圆心Y坐标

if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {

imagesetpixel($img, $x, $y, $rgbColor);

}

}

}

}

return $img;

}

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值