功能:點擊按鈕將一張矩形的圖片裁剪為圓形的圖片,圓形圖片為矩形的內切圓
工具類:
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); } });
效果: