android 将图片的四角圆化 与 剪裁圆形图片

/**
     * 将图片的四角圆化
     * @param bitmap 原图
     * @param roundPixels 圆滑率
     * @param half 是否截取半截
     * @return
     */
    public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels,int half)
    {
    	int width=bitmap.getWidth();
    	int height=bitmap.getHeight();
    	
        //创建一个和原始图片一样大小位图
        Bitmap roundConcerImage = Bitmap.createBitmap(width,height, Config.ARGB_8888);
        //创建带有位图roundConcerImage的画布
        Canvas canvas = new Canvas(roundConcerImage);
        //创建画笔
        Paint paint = new Paint();
        //创建一个和原始图片一样大小的矩形
        Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        RectF rectF = new RectF(rect);
        // 去锯齿
        paint.setAntiAlias(true);
        
        
        //画一个和原始图片一样大小的圆角矩形
        canvas.drawRoundRect(rectF, roundPixels, roundPixels , paint);
        //设置相交模式
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        //把图片画到矩形去
        canvas.drawBitmap(bitmap, null, rect, paint);
        switch(half){
        	case HalfType.LEFT:
        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width/2, height);
        	case HalfType.RIGHT:
        		return Bitmap.createBitmap(roundConcerImage, width/2, 0, width/2, height);
        	case HalfType.TOP:
        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width, height/2);
        	case HalfType.BOTTOM:
        		return Bitmap.createBitmap(roundConcerImage, 0, height/2, width, height/2);
        	case HalfType.NONE:
        		return roundConcerImage;
        	default:
        		return roundConcerImage;
        }
    }

剪裁圆形图片

        /**
         * 转换图片成圆形
         * @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;
                        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;
                        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, 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);
 
                paint.setAntiAlias(true);
                 
                canvas.drawARGB(0, 0, 0, 0);
                paint.setColor(color);
                canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
 
                paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
                canvas.drawBitmap(bitmap, src, dst, paint);
                return output;
        }


你可能感兴趣的:(android图片)