|
5 | 5 | import android.database.Cursor; |
6 | 6 | import android.graphics.Bitmap; |
7 | 7 | import android.graphics.BitmapFactory; |
| 8 | +import android.graphics.Canvas; |
| 9 | +import android.graphics.Color; |
8 | 10 | import android.graphics.Matrix; |
| 11 | +import android.graphics.Paint; |
| 12 | +import android.graphics.PorterDuff; |
| 13 | +import android.graphics.PorterDuffXfermode; |
| 14 | +import android.graphics.Rect; |
| 15 | +import android.graphics.RectF; |
9 | 16 | import android.media.ExifInterface; |
10 | 17 | import android.net.Uri; |
11 | 18 | import android.os.AsyncTask; |
@@ -490,4 +497,58 @@ public static byte[] createThumbnailFromUri(Context context, |
490 | 497 |
|
491 | 498 | return stream.toByteArray(); |
492 | 499 | } |
| 500 | + |
| 501 | + public static Bitmap getCircularBitmap(final Bitmap bitmap) { |
| 502 | + if (bitmap==null) |
| 503 | + return null; |
| 504 | + |
| 505 | + final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); |
| 506 | + final Canvas canvas = new Canvas(output); |
| 507 | + final Paint paint = new Paint(); |
| 508 | + final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); |
| 509 | + final RectF rectF = new RectF(rect); |
| 510 | + |
| 511 | + paint.setAntiAlias(true); |
| 512 | + canvas.drawARGB(0, 0, 0, 0); |
| 513 | + paint.setColor(Color.RED); |
| 514 | + canvas.drawOval(rectF, paint); |
| 515 | + |
| 516 | + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); |
| 517 | + canvas.drawBitmap(bitmap, rect, rect, paint); |
| 518 | + |
| 519 | + // outline |
| 520 | + paint.setStyle(Paint.Style.STROKE); |
| 521 | + paint.setStrokeWidth(1f); |
| 522 | + paint.setColor(Color.DKGRAY); |
| 523 | + canvas.drawOval(rectF, paint); |
| 524 | + |
| 525 | + return output; |
| 526 | + } |
| 527 | + |
| 528 | + public static Bitmap getRoundedEdgeBitmap(final Bitmap bitmap, int radius) { |
| 529 | + if (bitmap == null) { |
| 530 | + return null; |
| 531 | + } |
| 532 | + |
| 533 | + final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); |
| 534 | + final Canvas canvas = new Canvas(output); |
| 535 | + final Paint paint = new Paint(); |
| 536 | + final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); |
| 537 | + final RectF rectF = new RectF(rect); |
| 538 | + |
| 539 | + paint.setAntiAlias(true); |
| 540 | + canvas.drawARGB(0, 0, 0, 0); |
| 541 | + paint.setColor(Color.RED); |
| 542 | + canvas.drawRoundRect(rectF, radius, radius, paint); |
| 543 | + |
| 544 | + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); |
| 545 | + canvas.drawBitmap(bitmap, rect, rect, paint); |
| 546 | + |
| 547 | + paint.setStyle(Paint.Style.STROKE); |
| 548 | + paint.setStrokeWidth(1f); |
| 549 | + paint.setColor(Color.DKGRAY); |
| 550 | + canvas.drawRoundRect(rectF, radius, radius, paint); |
| 551 | + |
| 552 | + return output; |
| 553 | + } |
493 | 554 | } |
0 commit comments