当前位置:首页 > 技术文档 > 正文内容

php给图片添加圆角并且保持透明,可做圆形头像

admin8年前 (2018-02-06)技术文档1977

想把图片处理成圆形透明的图片请参考文章

php把图片处理成圆形


给图片添加圆角,

用到的主要的(判断一个点是否在圆内)的公式在上面所说的生成圆形图片文章中。

然后扫描原图把每个个适合的像素画到一个透明的图片上去


根据想添加的圆角大小来生成一定的圆角

如图

blob.png

首先根据圆角确定图片四角的正方形形状,扫描的时候只要是不在这些范围内的像素才画上去

/**
  *  blog:http://www.zhaokeli.com
 * 处理成圆图片,如果图片不是正方形就取最小边的圆半径,从左边开始剪切成圆形
 * @param  string $imgpath [description]
 * @return [type]          [description]
 */
function yuan_img($imgpath = './tx.jpg') {
	$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);
	//这一句一定要有
	imagesavealpha($img, true);
	//拾取一个完全透明的颜色,最后一个参数127为全透明
	$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
	imagefill($img, 0, 0, $bg);
	$r   = $w / 2; //圆半径
	$y_x = $r; //圆心X坐标
	$y_y = $r; //圆心Y坐标
	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);
			}
		}
	}
	return $img;
}
header("content-type:image/png");
$imgg = yuan_img();
imagepng($imgg);
imagedestroy($imgg);

原理如图


blob.png

用以下公式计算

(x-a)*(x-a)+(y-b)*(y-b)<r2

公式成立说明当前x,y点在圆内

x,y为当前的坐标

a,b为圆的圆心位置

r为半径

先创建一张透明的图片,

然后一行一行的扫描原图如图像素点在圆内就画出这个像素不在的就保持透明色就可以


分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/252.html

分享给朋友:

“php给图片添加圆角并且保持透明,可做圆形头像” 的相关文章

php 获取页面内容

function get_contents($url){     if(function_exists('file_get_contents')){       &nbs...

php获取从百度搜索进入网站的关键词

<?php    function search_word_from() {     $referer = isset($_SERVER['HTTP_REFERER'])?...

php无限分类-总结

//php代码部分  <?php         header('Content-Type:text/html;charset=utf-8');    ...

php简单分页类

<?php class page{            public $page; //当前页     publi...

phpcms v9更换模板的具体操作方法

phpcms v9更换模板的具体操作方法

这篇文章主要介绍了phpcms v9更换模板的具体操作方法,需要的朋友可以参考下分享一下Phpcms V9更换模板的具体操作方法先分享下大概的步骤:1、上传模版文件到服务器;2、在站点管理 里边【模板风格配置】选择新模板;3、设置不同模型对应模板;4、修改现有的栏目,匹配新模板;5、更新栏目缓存、系...

推荐一些国内的Jquery CDN免费服务

Jquery是个非常流行的JS前端框架,在很多网站都能看到它的身影。很多网站都喜欢采用一些Jquery CDN加速服务,这样网站加载jquery会更快。之前火端网络的一些网站都是使用Google的jquery CDN,如:http://ajax.googleapis.com/ajax/lib...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。