Skip to content

Commit 673efdd

Browse files
committed
Improve Drawable to Bitmap conversion
1 parent db8b8e9 commit 673efdd

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

circleimageview/src/main/java/de/hdodenhof/circleimageview/CircleImageView.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.graphics.Paint;
1212
import android.graphics.RectF;
1313
import android.graphics.Shader;
14+
import android.graphics.drawable.BitmapDrawable;
1415
import android.graphics.drawable.Drawable;
1516
import android.util.AttributeSet;
1617
import android.widget.ImageView;
@@ -127,11 +128,20 @@ private Bitmap getBitmapFromDrawable(Drawable drawable){
127128
if (drawable == null){
128129
return null;
129130
}
130-
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
131-
Canvas canvas = new Canvas(bitmap);
132-
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
133-
drawable.draw(canvas);
134-
return bitmap;
131+
132+
if (drawable instanceof BitmapDrawable) {
133+
return ((BitmapDrawable) drawable).getBitmap();
134+
}
135+
136+
try {
137+
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
138+
Canvas canvas = new Canvas(bitmap);
139+
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
140+
drawable.draw(canvas);
141+
return bitmap;
142+
} catch (OutOfMemoryError e){
143+
return null;
144+
}
135145
}
136146

137147
private void setup(){

0 commit comments

Comments
 (0)