Android開發,將圖片(bitmap)變成圓形圖片、圖片檔案變成bitmap的方法
阿新 • • 發佈:2019-01-28
我在最近進行Android專案開發的時候,遇到了頭像的問題,個人頭像一般是正方形,這是需要將它變成圓形,這是一個比較簡單的方法。
寫以自用。
新建一個工具類BitmapToRound_Util.java
/** * 將bitmap處理為圓形 * @author Stanny * * 2015年9月28日 */ public class BitmapToRound_Util { 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; } }
開始使用,在需要使用的地方,呼叫方法:
先初始化:
private BitmapToRound_Util round_Util = new BitmapToRound_Util();
呼叫:
bitmap = round_Util.toRoundBitmap(bitmap);
輸出後就是一個圓形的bitmap
如果要將圖片檔案變成bitmap,可以使用以下的方法:
Bitmap bitmap = BitmapFactory.decodeFile(*your image path——>/sdcard0/...../**.png*);