Scaling down large images to avoid Out of Memory exceptions

Working with images can be very memory intensive, often resulting in your application crashing with an Out of Memory exception. This is especially true with pictures taken with the device camera, as they often have a much higher resolution than the device itself.

Since loading a higher resolution image than the UI supports doesn't provide any visual benefit in this example, this recipe will demonstrate how to take smaller samples of the image for display. We'll use the BitmapFactory to first check the image size then load a scaled-down image.

Here's a screenshot from this recipe showing a thumbnail of a very large image:

Getting ready

Create a new project in Android Studio and call it:

Get Android Application Development Cookbook - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.