[转]裁剪一张图片成圆形图片

  1. /**
  2. * 转换图片成圆形
  3. *
  4. * @param bitmap
  5. *            传入Bitmap对象
  6. * @return
  7. */
  8. public Bitmap toRoundBitmap(Bitmap bitmap) {
  9. int width = bitmap.getWidth();
  10. int height = bitmap.getHeight();
  11. float roundPx;
  12. float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
  13. if (width <= height) {
  14. roundPx = width / 2;
  15. left = 0;
  16. top = 0;
  17. right = width;
  18. bottom = width;
  19. height = width;
  20. dst_left = 0;
  21. dst_top = 0;
  22. dst_right = width;
  23. dst_bottom = width;
  24. } else {
  25. roundPx = height / 2;
  26. float clip = (width - height) / 2;
  27. left = clip;
  28. right = width - clip;
  29. top = 0;
  30. bottom = height;
  31. width = height;
  32. dst_left = 0;
  33. dst_top = 0;
  34. dst_right = height;
  35. dst_bottom = height;
  36. }
  37. Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
  38. Canvas canvas = new Canvas(output);
  39. final int color = 0xff424242;
  40. final Paint paint = new Paint();
  41. final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
  42. final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
  43. final RectF rectF = new RectF(dst);
  44. paint.setAntiAlias(true);// 设置画笔无锯齿
  45. canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas
  46. paint.setColor(color);
  47. // 以下有两种方法画圆,drawRounRect和drawCircle
  48. // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
  49. canvas.drawCircle(roundPx, roundPx, roundPx, paint);
  50. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452
  51. canvas.drawBitmap(bitmap, src, dst, paint); //以Mode.SRC_IN模式合并bitmap和已经draw了的Circle
  52. return output;
  53. }

参考流程图 &  原理图:

转自:

http://blog.csdn.net/sno_guo/article/details/42341917

时间: 2024-08-01 08:47:23

[转]裁剪一张图片成圆形图片的相关文章

如何将方形图片磨成圆形图片

如何将方形图片磨成圆形图片 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状.但是往往我们手上的图片或者从服务器 获取到的图片都是方形的.这时候就需要我们自己进行处理,将图片处理成所需要的形状. 使用Xfermode 两图相交方式 通过查找资料通过查找资料发现android中可以设置画笔的Xfermode即相交模式,从而设置两张图相交之后的显示方式,具体模式见下图,源码可以去android apidemo.(SRC 为我们要画到目标图上的图即

Glide的加载图片的帮助类,用来把图片圆角或者改成圆形图片

Glide虽然非常好用但是没找到把图片圆角的方法,所以百度了一个非常不错的加载类自己实现圆角图 感谢原文章作者:http://blog.csdn.net/weidongjian/article/details/47144549 自定义一个extend BitmapTransformation的方法,把获得的bitmap转化成圆形图片 import android.content.Context; import android.content.res.Resources; import andro

把图片转换成圆形图片

调用:(bt是Bitmap) head_portrait.setImageBitmap(ToRoundBitmap.toRoundBitmap(bt)); 转换圆形的方法: 1 package com.ghp.tools; 2 3 import android.graphics.Bitmap; 4 import android.graphics.Canvas; 5 import android.graphics.Color; 6 import android.graphics.Paint; 7

ios 将矩形图片裁剪成圆形图片

在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBounds = YES 就可以了, 但是对于长方形的图片来说这个方式裁剪出来的就不是一个圆形的了, 而是个椭圆的. 解决这个问题就需要自己画 并且需要计算. 最终效果图如下: tips: 如果是裁剪矩形的话, 是从图片中心的位置为圆心剪裁的. 代码如下: @implementation UIImage (C

iOS给一张矩形图片剪切成圆形图片

随着APP发展,个人账户的注册和登陆,都有头像的设置,圆形头像也越来越多,此方法正是对剪切圆头像的封装. //****************************************************************************************************************// //******************************************************************************

cocos2dx 3.X 利用clippingNode把图片裁剪成圆形

ClippingNode简介 先简单了解一下clippingNode类的使用.顾名思义,首先它是一个node,可以做为其他sprite,node的容器,而且是一个可以裁剪的node.如何裁剪,如何定义一套裁剪的规则出来.这里可以使用一张图片,根据图片的分辨率或者有效像素进行裁剪,或者自己画出来一个裁剪区域,根据这个区域进行裁剪.那这个图片或者画出来的区域,就是模板,clippingNode根据模板进行图片的裁剪. 主要方法: static ClippingNode* create(Node *s

微信小程序裁剪图片成圆形

代码地址如下:http://www.demodashi.com/demo/14453.html 前言 最近在开发小程序,产品经理提了一个需求,要求微信小程序换头像,用户剪裁图片必须是圆形,也在github上看了一些例子,一般剪裁图片用的都是方形,所以自己打算写一个小组件,可以把图片剪裁成圆形,主要思路就是使用canvas绘图,把剪裁的图片绘制成圆形,另外剪裁图片的窗口还可以移动放大缩小,这个功能就用了微信组件movable-view,好了,该说的也说完了,下面咱们开始撸代码. movable-v

iOS之带有边框的圆形图片裁剪

我们经常需要把一些不是圆形的图片剪切成圆形后来使用,比如QQ头像,微博头像等都是圆形,那么问题来了,该怎么把一张不是圆形的图片剪切成圆形呢? 下面就是其中一种可以实现这种需求的方法: 具体实现思路: 1.假设边框宽度为BorderW 2.开启的图片上下文的尺寸就应该是原始图片的宽高分别加上两倍的BorderW,这样开启的目的是为了不让原始图片变形. 3.在上下文上面添加一个圆形填充路径.位置从0,0点开始,宽高和上下文尺寸一样大.设置颜色为要设置的边框颜色. 4.继续在上下文上面添加一个圆形路径

ios之如何让图片显示成圆形的样式/设置控件边框大小以及颜色

比如说QQ登陆头像显示出来的就是圆形的,但实际上它的图片并非就是圆形,而是通过对layer层进行绘制而成的.说到layer每个控件都会有layer层属性所以可以把任意的控件都可以设置成圆形,或是椭圆型看项目需要而定 UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"头像.png"]]; imageView.frame = CGRectMake(100, 100, 100, 1