Android中把矩形图片切成圆形图片

来源:互联网 发布:药房软件系统 编辑:程序博客网 时间:2024/05/21 06:58

//直接调用此方法即可

    public void square(){

         //获取图片资源

          InputStream is1 = getResources().openRawResource(R.drawable.nongmin);
          @SuppressWarnings("deprecation")
          BitmapDrawable bmpDraw1 = new BitmapDrawable(is1);
          Bitmap bmp1 = bmpDraw1.getBitmap();
          Bitmap bm1 = toRoundBitmap(bmp1);

        //将切好的图片放回到ImageView中去
          iv.setImageBitmap(bm1);
    }
    
    /**
     * 头像切成圆形显示
     **/
    public Bitmap toRoundBitmap(Bitmap bitmap) {
        //圆形图片宽高
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        //正方形的边长
        int r = 0;
        //取最短边做边长
        if (width > height) {
            r = height;
        } else {
            r = width;
        }
        //构建一个bitmap
        Bitmap backgroundBmp = Bitmap.createBitmap(width,
                height, Bitmap.Config.ARGB_8888);
        //new一个Canvas,在backgroundBmp上画图
        Canvas canvas = new Canvas(backgroundBmp);
        Paint paint = new Paint();
        //设置边缘光滑,去掉锯齿
        paint.setAntiAlias(true);
        //宽高相等,即正方形
        RectF rect = new RectF(0, 0, r, r);
        //通过制定的rect画一个圆角矩形,当圆角X轴方向的半径等于Y轴方向的半径时,
        //且都等于r/2时,画出来的圆角矩形就是圆形
        canvas.drawRoundRect(rect, r / 2, r / 2, paint);
        //设置当两个图形相交时的模式,SRC_IN为取SRC图形相交的部分,多余的将被去掉
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        //canvas将bitmap画在backgroundBmp上
        canvas.drawBitmap(bitmap, null, rect, paint);
        //返回已经绘画好的backgroundBmp
        return backgroundBmp;
    }

0 0
原创粉丝点击