All Blog Posts

Android App Image Compression

Time for the latest and greatest to come out of Freeish Time! We got to sit down with Juan, our INSANELY talented Android Developer, to chat about his latest innovation…

Innovation

Photo Blog

Time for the latest and greatest to come out of Freeish Time! Just to refresh your memory, “Freeish Time” is the opportunity for our Cubes to focus on their passion projects outside of their work commitments. They have an entire week to identify a problem, build and create a solution, then present it to the rest of the team during our Friday Happy Half Hour meeting.

This has become an integral part of 3 Sided Cube. The encouragement and time to work purely on whatever their heart desires, all while getting a little reprieve from the normal hustle and bustle from the normal workload is a welcomed treat. Whether they opt to go the “innovation” or “education” route, that invaluable time to focus purely on whatever it is that intrigues them is pretty rad.

The sky’s the limit when it comes to Freeish Time. We got to sit down with Juan, our INSANELY talented Android Developer, to chat about his latest innovation…

What inspired your innovation time?

I wanted to gain a better understanding of how media is managed within an app. Basically, to build an app that reduces the storage size of an image without losing its quality. Easier said than done. 

I felt that learning how to manage the image compression flow in-depth, as well as learning Kotlin, Android, and Firebase new approaches could be useful for our Android projects to make them more efficient and a better user experience. And most importantly, for my own selfies!

This is a concept I have explored in my previous freeish time but didn’t have enough time to fully educate myself, explore and build my own app, trialling this knowledge. I was excited when my week came up, to have more time to fully dive into the intricacies of this project! 

Talk us through what you did

Initially, when I first began, a lot of time was spent learning. Educating myself on the theory and understanding it better so that I was well prepared for the task at hand. Stack Overflow became my bible and a great resource for information.

I quickly saw that it was essential that I understood how to handle bitmaps efficiently. Google recommends the bitmap managing on Android by using the image loaders Glide, Picasso, Coil and Fresco. Glide does this job efficiently and has integrations with Firebase Store, but I wanted to understand how it works internally to understand the basics better.

When I managed the image compression, I wanted to upload them to Firebase. So it could handle the download process to show it in a gallery, and offer the capability to zoom on images, to improve the user experience.

What were the key learnings?

By using new and recommended programming languages, and its best practices, it helped to achieve the desired target. Furthermore, it allowed me to refresh and learn new Kotlin, Android, and Firebase libraries.

I could use what I have learnt on Android projects by using the last architecture. What I have studied and applied is:

  • Managing better Kotlin and KTX libraries
  • Learning more about Coroutines
  • Refreshing LiveData and ViewModels
  • Using the viewbinding library better
  • Understanding better BitmapFactory options to manage bigger bitmaps, and how to compress them efficiently
  • Using and discovering different libraries to manage images like Glide and Zoomy
  • Learning and implementing new features for Firebase Storage

Were there any challenges?

I faced some challenges when I was delving into the project. One of them being, today’s cameras have high resolutions, so it is crucial to managing them when the image size in memory is larger than the image size on the screen. Therefore, managing it properly, puts less performance pressure on the rest of the system, because otherwise, we will have this problem!

Another challenge was dealing with bugs, but it was nothing my bible, Stack Overflow, couldn’t help me with. To find out more, take a look here:

How can you use this within your role at 3 Sided Cube?

This Freeish Time has actually been extremely helpful as we have several projects that I have been able to apply this knowledge to. I am now so much more comfortable working with compressing images and look forward to expanding my skillset even more. Maybe next time you’ll find me using the innovation time to take it a step further and try videos!

 

As always, it is so rad to sit down with a fellow Cube and pick their brilliant brain! See you the next time one of us is innovatin’ 

Published on November 13, 2020, last updated on March 31, 2021

Give us the seal of approval!

Like what you read? Let us know.

15

Tags