Why just quantize the Mona Lisa when you can stat, swipe, and share her too?
Assignment 7 provided a fun opportunity to go to town on some extra features of an assginment. The basic Assignment 7 required us to:
- quantize one of three images using a wavelent transform
- examine the difference between the quantized and orginal images
- reconstruct the image from the quantization
- provide some statistics on the transformation
We thought building the program on Android would be a fun challenge. After working on the mobile platform for Assignment 4 (Morphing), we knew that efficient image processing in Java with an Android tablet's limited resources was a challenge and we wanted a chance to practice building an efficient transformation algorithm.
Show and Tell
Furthermore, the Android platform gave us a unique challenge of how to present the different information for the assignment. It would have been easy to just save the pictures to the device, but what is the fun in having to access your work from Android's ADB shell? We decided to use the Android View Pager Indicator tab library to swipe through the pictures and statistics. This took a significant amount of work since each picture needs to be processed in a gui-separate thread and then call back to the GUI to update even if the user is in the middle of swiping.
Once we had the basic image compression and view pager indicator sliding tabs working, we decided to build out image downloading via url fetch so that a user could test any picture they wanted to compress (as long as they have a valid url) and implemented Android's share feature so that the pictures and statistics could be shared via email or social networks.
Building graphics assignments on Android is a challenging experience: Any CS148 library code has to be rewritten and implementation needs to take into consideration resource constraints and Java inefficiencies (or the Android NDK to write in C). However, working with these constraints and in the Android system is as remarkable as it is a challenging experience that really teaches you far more than doing the standard assignment. We highly reccomend future CS148 students to give it a try!