Android 圖片繪製成圓角圖片
阿新 • • 發佈:2018-12-06
import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Shader; /** * author cowards * created on 2018\11\23 0023 **/ public class BitmapUtil { /** * 利用BitmapShader繪製圓角圖片 * * @param bitmap 待處理圖片 * @param outWidth 結果圖片寬度,一般為控制元件的寬度 * @param outHeight 結果圖片高度,一般為控制元件的高度 * @param radius 圓角半徑大小 * @return 結果圖片 */ public static Bitmap roundBitmapByShader(Bitmap bitmap, int outWidth, int outHeight, int radius) { if (bitmap == null) { throw new NullPointerException("Bitmap can't be null"); } // 初始化縮放比 float widthScale = outWidth * 1.0f / bitmap.getWidth(); float heightScale = outHeight * 1.0f / bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.setScale(widthScale, heightScale); // 初始化繪製紋理圖 BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); // 根據控制元件大小對紋理圖進行拉伸縮放處理 bitmapShader.setLocalMatrix(matrix); // 初始化目標bitmap Bitmap targetBitmap = Bitmap.createBitmap(outWidth, outHeight, Bitmap.Config.ARGB_8888); // 初始化目標畫布 Canvas targetCanvas = new Canvas(targetBitmap); // 初始化畫筆 Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(bitmapShader); // 利用畫筆將紋理圖繪製到畫布上面 targetCanvas.drawRoundRect(new RectF(0, 0, outWidth, outWidth), radius, radius, paint); return targetBitmap; } }