1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| public class BitmapUtils { public static Bitmap fillet(Bitmap bitmap, int roundPx, boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight) { try { final int width = bitmap.getWidth(); final int height = bitmap.getHeight();
Bitmap paintingBoard = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(paintingBoard); canvas.drawARGB(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT);
final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLACK);
final RectF rectF = new RectF(0, 0, width, height); canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
if (topLeft) { clipTopLeft(canvas, paint, roundPx, width, height); } if (topRight) { clipTopRight(canvas, paint, roundPx, width, height); } if (bottomLeft) { clipBottomLeft(canvas, paint, roundPx, width, height); } if (bottomRight) { clipBottomRight(canvas, paint, roundPx, width, height); } paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
final Rect src = new Rect(0, 0, width, height); final Rect dst = src; canvas.drawBitmap(bitmap, src, dst, paint); return paintingBoard; } catch (Exception exp) { return bitmap; } }
private static void clipTopLeft(final Canvas canvas, final Paint paint, int offset, int width, int height) { final Rect block = new Rect(0, 0, offset, offset); canvas.drawRect(block, paint); }
private static void clipTopRight(final Canvas canvas, final Paint paint, int offset, int width, int height) { final Rect block = new Rect(width - offset, 0, width, offset); canvas.drawRect(block, paint); }
private static void clipBottomLeft(final Canvas canvas, final Paint paint, int offset, int width, int height) { final Rect block = new Rect(0, height - offset, offset, height); canvas.drawRect(block, paint); }
private static void clipBottomRight(final Canvas canvas, final Paint paint, int offset, int width, int height) { final Rect block = new Rect(width - offset, height - offset, width, height); canvas.drawRect(block, paint); } }
|