在网上搜集到Android圆角图片及圆形图片的生成方法。import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; /** * Created by Cying on 14-2-28. */ public class ImageHelper { /** * Crops a circle out of the thumbnail photo. * 获得圆形图片 * * */ public static Bitmap getCroppedBitmap(Bitmap bitmap) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); //设置一个图片大小的矩形 final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); //bm是一个刚好canvas大小的空Bitmap ,画完后应该会自动保存到bm Canvas canvas = new Canvas(output); final Paint paint = new Paint(); paint.setAntiAlias(true); int halfWidth = bitmap.getWidth() / 2; int halfHeight = bitmap.getHeight() / 2; //画圆 canvas.drawCircle(halfWidth, halfHeight, Math.max(halfWidth, halfHeight), paint); //设置为取两层图像交集部门,只显示上层图像 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //画图像 canvas.drawBitmap(bitmap, rect, rect, paint); return output; } /** * Crops a circle out of the thumbnail photo. * 获得圆角矩形图片 * * */ public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap .getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); final float roundPx = pixels; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } /** * 相当于Bitmap.getByteCount()方法,获取Bitmap存储用的最小字节数量 * * @param bitmap 用于计算的Bitmap * @return Bitmap存储用的最小字节数量 */ public static int getByteCount(Bitmap bitmap) { Bitmap.Config config = bitmap.getConfig(); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int pixelByte = 4;//大多数图片默认Config.ARGB_8888 if (config == Bitmap.Config.ARGB_8888) { pixelByte = 4; } else if (config == Bitmap.Config.ALPHA_8) { pixelByte = 1; } else if (config == Bitmap.Config.ARGB_4444) { pixelByte = 2; } else if (config == Bitmap.Config.RGB_565) { pixelByte = 2; } return width * height * pixelByte; } }
Android 圆角图片及圆形图片的生成
最新推荐文章于 2021-12-04 15:32:55 发布