您的位置:首页 > 移动开发 > Android开发

Android 绘制圆形头像

2017-05-26 09:43 246 查看
转载自:http://www.flakor.cn/2014-05-28-513.html

/**

    * 转换图片成圆形

    * @param bitmap 传入Bitmap对象

    * @return

    */

   public Bitmap toRoundBitmap(Bitmap bitmap)

   {

       int width = bitmap.getWidth();

       int height = bitmap.getHeight();

       float roundPx;

       float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;

       if (width <= height) {

           roundPx = width / 2 -5;

           top = 0;

           bottom = width;

           left = 0;

           right = width;

           height = width;

           dst_left = 0;

           dst_top = 0;

           dst_right = width;

           dst_bottom = width;

       } else {

           roundPx = height / 2 -5;

           float clip = (width - height) / 2;

           left = clip;

           right = width - clip;

           top = 0;

           bottom = height;

           width = height;

           dst_left = 0;

           dst_top = 0;

           dst_right = height;

           dst_bottom = height;

       }

 

       Bitmap output = Bitmap.createBitmap(width,

               height, Bitmap.Config.ARGB_8888);

       Canvas canvas = new Canvas(output);

 

       final int color = 0xff424242;

       final Paint paint = new Paint();

       final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom);

       final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom);

       final RectF rectF = new RectF(dst_left+15, dst_top+15, dst_right-20, dst_bottom-20);

 

       paint.setAntiAlias(true);

 

       canvas.drawARGB(0, 0, 0, 0);

       paint.setColor(color);

 

       canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

 

       paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

       canvas.drawBitmap(bitmap, src, dst, paint);

       return output;

   }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: