zoukankan      html  css  js  c++  java
  • 将矩形图片转化为圆形图片

    功能:点击按钮将一张矩形的图片裁剪为圆形的图片,圆形图片为矩形的内切圆

    工具类:

    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.PorterDuff;
    import android.graphics.PorterDuffXfermode;
    
    /**
     * 将矩形图片变为圆形的工具类
     */
    public class CircleBitmap  {
    
        public Bitmap getBitmap(Bitmap source) {
            //我这里是得到bitmap宽与高的最小值,然后作为圆的半径  
            int min = source.getHeight()>source.getWidth()?source.getWidth():source.getHeight();
            return createCircleImage(source,min);
        }
    
        /**
         * 创建圆形图片的一个方法
         * @param source  需要转变成圆形的bitmap图片
         * @param min  圆形bitmap的半径
         * @return 返回变换好的圆形bitmap
         */
        private Bitmap createCircleImage(Bitmap source, int min)
        {
            final Paint paint = new Paint();
            paint.setAntiAlias(true);
            Bitmap target = Bitmap.createBitmap(min, min, Bitmap.Config.ARGB_8888);
            /**
             * 产生一个同样大小的画布
             */
            Canvas canvas = new Canvas(target);
            /**
             * 首先绘制圆形
             */
            canvas.drawCircle(min / 2, min / 2, min / 2, paint);
            /**
             * 使用SRC_IN  交互
             */
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
            /**
             * 绘制图片
             */
            canvas.drawBitmap(source, 0, 0, paint);
            return target;
        }
    
    }

    实例:

          final ImageView image = (ImageView) findViewById(R.id.image);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b);
                    Bitmap afterBitmap = new CircleBitmap().getBitmap(bitmap);
                    image.setImageBitmap(afterBitmap);
                    }
            });

    效果:

     

  • 相关阅读:
    当前信息型强人工智能发展缺失条件--规则
    假象篇(1)-动态可变参数的神经网络
    02梦断代码阅读笔记
    结队开发之NABCD
    01梦断代码阅读笔记
    03构建之法阅读笔记
    进度3
    02构建之法阅读笔记
    01构建之法阅读笔记
    关于最大子序和的算法问题(二)
  • 原文地址:https://www.cnblogs.com/fangg/p/5918329.html
Copyright © 2011-2022 走看看