Android中将方形图片截取成圆形的两种实现方式
来源:互联网 发布:ping端口号 编辑:程序博客网 时间:2024/06/05 16:28
以下两种方法均有不足,仅供参考
第一种实现方式是通过设置画笔的渲染方式对图片进行处理:
首先要了解几种渲染方式
1.BitmapShader(图像渲染)
BitmapShader的作用是使用一张位图作为纹理来对某一区域进行填充。可以想象成在一块区域内铺瓷砖,只是这里的瓷砖是一张张位图而已。
2.LinearGradient(线性渲染)
LinearGradient的作用是实现某一区域内颜色的线性渐变效果。
3.ComposeShader(混合渲染)
ComposeShader的作用是实现渲染效果的叠加,如BitmapShader与LinearGradient的混合渲染效果等。
4.RadialGradient(环形渲染)
RadialGradient的作用是在某一区域内实现环形的渐变效果。
5.SweepGradient(梯度渲染)
SweepGradient也称为扫描渲染,是指在某一中心以x轴正方向逆时针旋转一周而形成的扫描效果的渲染形式。
public Bitmap drawCircleView01(Bitmap bitmap) { //这里可能需要调整一下图片的大小来让你的图片能在圆里面充分显示 bitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true); //构建一个位图对象,画布绘制出来的图片将会绘制到此bitmap对象上 Bitmap bm = Bitmap.createBitmap(200, 200, Config.ARGB_8888); //构建一个画布, Canvas canvas = new Canvas(bm); //获得一个画笔对象,并设置为抗锯齿 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); //获得一种渲染方式对象 //BitmapShader的作用是使用一张位图作为纹理来对某一区域进行填充。 //可以想象成在一块区域内铺瓷砖,只是这里的瓷砖是一张张位图而已。 Shader shader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); //设置画笔的渲染方式 paint.setShader(shader); //通过画布的画圆方法将渲染后的图片绘制出来 canvas.drawCircle(100, 100, 100, paint); //返回的就是一个圆形的bitmap对象 return bm; }
第二种方法是通过绘制出两个图形,然后在他们的交集区域显示需要裁剪的图片:
public Bitmap drawCircleView02(Bitmap bitmap){ //前面同上,绘制图像分别需要bitmap,canvas,paint对象 bitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true); Bitmap bm = Bitmap.createBitmap(200, 200, Config.ARGB_8888); Canvas canvas = new Canvas(bm); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); //这里需要先画出一个圆 canvas.drawCircle(100, 100, 100, paint); //圆画好之后将画笔重置一下 paint.reset(); //设置图像合成模式,该模式为只在源图像和目标图像相交的地方绘制源图像 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, 0, 0, paint); return bm; }
附上最后绘制出来的效果图:
2 0
- Android中将方形图片截取成圆形的两种实现方式
- android两种方式实现圆形图片
- android图片截取的两种方式
- 两种方式实现圆形图片
- Android Drawable 实现圆形,方形圆角图片
- Android 两种方式实现圆形头像
- iOS-方形图片设置成圆形图片
- 方形图片使用QLabel显示成圆形
- iOS方形图片裁剪成圆形
- android图片截取的两种形式
- 将方形图片转换成为圆形图片的工具类
- Android项目中的BitMapUtil 将图片/bitmap方形转变成圆形
- android 圆形图片多种实现方式
- 方形图片转为圆形头像
- 自定义圆形方形图片边框
- Android 两种制作圆形/圆角图片的方法
- Android 两种制作圆形/圆角图片的方法
- Android实现图片的高斯模糊(两种方式)
- 99%学生都不知道的Paper写作神器,Google从此是路人
- uva11183 Teen Girl Squad(最小树形图朱刘算法)
- launchpad 账号注册并设置的步骤 的个人体会
- javascript 中的this call apply
- android-继承BaseAdapter自定义适配器,getView执行多次的解决方法
- Android中将方形图片截取成圆形的两种实现方式
- 编写可读代码的艺术chapter 10-13
- dictHsCode is not mapped
- Leetcode 298Binary Tree Longest Consecutive Sequence
- struts2标签
- 博客开通,留个纪念
- NOIP 2015 D1 T2 信息传递
- 在对象间“广播消息”
- HDU 3085 Nightmare Ⅱ(双向BFS)