1. 程式人生 > >Android開發,將圖片(bitmap)變成圓形圖片、圖片檔案變成bitmap的方法

Android開發,將圖片(bitmap)變成圓形圖片、圖片檔案變成bitmap的方法

我在最近進行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*);