文章摘要:上一篇文章,我说了关于php把文字画在图片上的换行方法,这篇说说项目中图片圆角的处理我们可能在很多项目中,需要对图片进行圆角处理,例如HTML5中,例如Android中;这里我们说说用PHP对图片进行圆角处理的方法;圆角处理的方法有很多,这里我就只说说我的项目中是怎么对处理圆角的;

效果图如下:

乐萌汉字卡片

如图可见,不论是插图,还是文字这背景,我们都做了圆角处理,下面我看看在PHP中,我们是怎么实现的吧。

这里我先说说实现的思路,我们是先画出直角的图,然后再用一个圆角去覆盖在直角上面,这样看起来就是一个圆角了。

一、背景图圆角处理

方法调用://整个图,也就是白色背景$im = imagecreatetruecolor(750, 3000);

$bgcolor = imagecolorallocate($im, 255, 255, 255);

imagefill($im, 0, 0, $bgcolor);//生成汉字的背景矩形$image_width = 694;//圆角淡色背景的宽694px$image_height = 368;//圆角淡色背景的高368px//矩形上面加圆角$radius = 10;//圆角的像素,值越大越圆$dst_x = 28;//距离白色大背景左边的距离$y = 40;//距离白色大背景顶端的距离//这里调用函数,绘制淡色的圆角背景,imagebackgroundmycard($im, $dst_x, $y, $image_width, $image_height, $radius);以上是调用函数的说明,下面我们给出函数方法:

方法实现:/**

* 画一个带圆角的背景图

* @param $im  底图

* @param $dst_x 画出的图的(0,0)位于底图的x轴位置

* @param $dst_y 画出的图的(0,0)位于底图的y轴位置

* @param $image_w 画的图的宽

* @param $image_h 画的图的高

* @param $radius 圆角的值

*/function imagebackgroundmycard($im, $dst_x, $dst_y, $image_w, $image_h, $radius){

$resource = imagecreatetruecolor($image_w, $image_h);

$bgcolor = imagecolorallocate($resource, 0xef, 0xef, 0xe1);//该图的背景色

imagefill($resource, 0, 0, $bgcolor);

$lt_corner = get_lt_rounder_corner($radius, 255, 255, 255);//圆角的背景色

// lt(左上角)

imagecopymerge($resource, $lt_corner, 0, 0, 0, 0, $radius, $radius, 100);    // lb(左下角)

$lb_corner = imagerotate($lt_corner, 90, 0);

imagecopymerge($resource, $lb_corner, 0, $image_h - $radius, 0, 0, $radius, $radius, 100);    // rb(右上角)

$rb_corner = imagerotate($lt_corner, 180, 0);

imagecopymerge($resource, $rb_corner, $image_w - $radius, $image_h - $radius, 0, 0, $radius, $radius, 100);    // rt(右下角)

$rt_corner = imagerotate($lt_corner, 270, 0);

imagecopymerge($resource, $rt_corner, $image_w - $radius, 0, 0, 0, $radius, $radius, 100);

imagecopy($im, $resource, $dst_x, $dst_y, 0, 0, $image_w, $image_h);

}

上面函数方法依赖的函数:/** 画圆角

* @param $radius 圆角位置

* @param $color_r 色值0-255

* @param $color_g 色值0-255

* @param $color_b 色值0-255

* @return resource 返回圆角

*/function get_lt_rounder_corner($radius, $color_r, $color_g, $color_b){    // 创建一个正方形的图像

$img = imagecreatetruecolor($radius, $radius);    // 图像的背景

$bgcolor = imagecolorallocate($img, $color_r, $color_g, $color_b);

$fgcolor = imagecolorallocate($img, 0, 0, 0);

imagefill($img, 0, 0, $bgcolor);    // $radius,$radius:以图像的右下角开始画弧

// $radius*2, $radius*2:已宽度、高度画弧

// 180, 270:指定了角度的起始和结束点

// fgcolor:指定颜色

imagefilledarc($img, $radius, $radius, $radius * 2, $radius * 2, 180, 270, $fgcolor, IMG_ARC_PIE);    // 将弧角图片的颜色设置为透明

imagecolortransparent($img, $fgcolor);    return $img;

}

最后输出图片:

讲浅色背景圆角处理的已经完成了,如果你想看看最后的效果,只要做下面一部,把图片输出就可以了。//生成图片imagepng($im, "test.png");

imagedestroy($im);

二、插图圆角处理:

和上面背景圆角处理完全相同的思路:就是对插图的直角进行覆盖,我就不多说了,下面附上插图圆角处理的的代码。//这里我们吧准备好的插图画到背景图上,此时还是直角的$filename="img/test_1.png"//图片资源目录$img = imagecreatefrompng($filename);//第一个参数是上面已经用过的大的背景图,也就我们的画板,//第二个参数:上面这个目录拿到的capy用的资源文件了//第三个单数距离大卡片左边的距离//第三个单数距离大卡片上边的距离//第三第四是资源图片开始拷贝的位置,这里我是从左上角开始copy的,所以是0和0;//第五第六个参数是图片拷过去的大小imagecopy($im, $img, 100, $y, 0, 0, 560, 288);//画圆角$lt_corner = get_lt_rounder_corner($radius, 0xef, 0xef, 0xe1);//圆角的背景色myradus($im, 100, $y, $lt_corner, $radius, 288, 560);

上面是调用的方法,这里的get_lt_rounder_corner 是一个自定义的函数,上面背景处理中已经列出该函数的具体实现,这里不再重复,下面给出myradus函数的具体实现:/**

* @param $im  大的背景图,也是我们的画板

* @param $lt_corner 我们画的圆角

* @param $radius  圆角的程度

* @param $image_h 图片的高

* @param $image_w 图片的宽

*/function myradus($im, $lift, $top, $lt_corner, $radius, $image_h, $image_w){/// lt(左上角)

imagecopymerge($im, $lt_corner, $lift, $top, 0, 0, $radius, $radius, 100);// lb(左下角)

$lb_corner = imagerotate($lt_corner, 90, 0);

imagecopymerge($im, $lb_corner, $lift, $image_h - $radius + $top, 0, 0, $radius, $radius, 100);// rb(右上角)

$rb_corner = imagerotate($lt_corner, 180, 0);

imagecopymerge($im, $rb_corner, $image_w + $lift - $radius, $image_h + $top - $radius, 0, 0, $radius, $radius, 100);// rt(右下角)

$rt_corner = imagerotate($lt_corner, 270, 0);

imagecopymerge($im, $rt_corner, $image_w - $radius + $lift, $top, 0, 0, $radius, $radius, 100);

}

是不是觉得下面这个代码已经写过了呢?是的,上面有一样的代码。

这样我们就实现的背景的圆角处理,也实现了图片的圆角处理。

作者:小追兵

链接:https://www.jianshu.com/p/ae2e38c146fa

php 图片 圆角,PHP将图片处理成圆角相关推荐

  1. 图片的角如何弄成圆角?

    相信很多小伙伴在生活中更加青睐圆角图片,比起四四方方的图片,圆角图片显得更加温和.但众所周知,无论是手机照片还是我们在网上下载的图片,都以直角的图片为主,如果有圆角的需求,就需要大家利用工具将图片的角 ...

  2. html给图片切圆角,PS如何把图片切成圆角 怎么做呀?

    回答: 先找个皮肤之后在用用Photoshop制作空间大图模块 Photoshop最大的优势就是强大的图片处理功能.因此我们利用它处理主页的皮肤,通过在皮肤上融图和添加个性图像,来制作浑然一体的个性空 ...

  3. php图片编辑,PHP将图片处理成圆角

    文章摘要:我们可能在很多项目中,需要对图片进行圆角处理,例如HTML5中,例如Android中用CardView来实现卡片圆角 这里我们说说用PHP对图片进行圆角处理的方法 圆角处理的方法有很多,这里 ...

  4. php 处理图片为有边框圆角,PHP将图片处理成圆角

    文章摘要: 这篇说说项目中图片圆角的处理 我们可能在很多项目中,需要对图片进行圆角处理,例如HTML5中,例如Android中: 这里我们说说用PHP对图片进行圆角处理的方法: 圆角处理的方法有很多, ...

  5. PHP将图片处理成圆角

    文章摘要: 上一篇文章,我说了关于php把文字画在图片上的换行方法,这篇说说项目中图片圆角的处理 我们可能在很多项目中,需要对图片进行圆角处理,例如HTML5中,例如Android中: 这里我们说说用 ...

  6. 使用RoundedBitmapDrawable快速生成圆角和圆形图片

    原文出处:http://www.tuicool.com/articles/eIBbArA 上一篇 <[Material Design]使用Palette类提取图片的颜色信息> 主要介绍了如 ...

  7. Android中绘制圆角矩形图片及任意形状图片

    转自http://blog.csdn.net/silangquan/article/details/8056583 圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为 ...

  8. 判断远程图片是否存在,否则替换成默认图片

    來源:http://www.jscode.cn/jave_img/350603662.htm <html> <head> <meta http-equiv="C ...

  9. python如何将图片打包进exe里_用python将图片切分为九宫格 并打包成exe可执行文件(附源码)...

    前言 经常在朋友圈或者微博看到九宫格显示的图片,虽然是九张图片,但是这是一张图片经过切割而成的,显示效果很震撼.今天,我们就用python将图片切分为九宫格,并打包成exe可执行文件,就算不需要代码也 ...

最新文章

  1. Linux下task_struct详解
  2. linux单用户模式修改密码(针对CentOS)
  3. 关于如何在MyEclipse下修改项目名包名,以及类
  4. Mat, vectorpoint2f,Point3d Iplimage等等常见类型转换
  5. 人行联网核查更新_又一批新职业公布,学互联网技术,等于站在就业“风口”...
  6. lvm-snapshot:基于LVM快照的备份
  7. iOS UI-AlertView(警示框)和ActionSheet(选择框、操作表单)
  8. skywalking环境搭建及使用
  9. Android利用温度传感器实现带动画效果的电子温度计
  10. 修正win10部署JDK8(使用JDK文件夹中的自带JRE)
  11. mac 更换默认蓝牙适配器_解决Switch最大遗憾,谷粒ROUTE Air蓝牙适配器:简单好用...
  12. 时间同步软件和相关网站
  13. 电商项目实战之支付宝支付订单
  14. 为什么使用VO,DTO,BO
  15. 求求你,别在MySQL中使用UTF-8了!
  16. Java学习之路-----Java基础简介,基础语法,Java标识符,修饰符,关键字与注释
  17. EMNLP2020 | 近期必读Transformer精选论文
  18. 汽车自动泊车辅助系统APA(上)
  19. 朝花夕拾《精通CSS》一、HTML CSS 的基础
  20. ListView 里面的checkBox,当其中一个被选中,其余全不被选中

热门文章

  1. 关于Mysql插入繁体字等特殊字符显示异常及查询异常
  2. 抽奖功能java开发_基于Java实现抽奖系统
  3. android pc 模拟器哪个好,安卓模拟器电脑版哪个好?
  4. 注意:网站中出现以下违规内容-搜索引擎百度都不收录
  5. pycharm的安装配置及思维导图
  6. [老码团队]Swift中的协议 - 用协议来实现委托模式
  7. 微信小程序iOS系统上echarts不能滑动的问题
  8. 如何绘制电气绝缘图(GB9706.1-2007和GB9706.1-2020差异)
  9. 云原生时代,如何保证容器镜像安全?
  10. 手机配音用哪个软件?推荐下面这几款软件