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;
        }
    }

剪裁圓形圖片java

        /**
         * 轉換圖片成圓形
         * @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;
        }
相關文章
相關標籤/搜索