KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I need to send images over a very low-bandwidth connection from an android phone (down to 10kByte/s) and would like to send them in progressive (interlaced) mode so that the user at the other end starts seeing the image already during the lengthy transfer. Right now, I am creating the image with the regular photo app: Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); But this creates non-progressive photos and I have not been able to discover how to convince it to do otherwise. The second option I explored (reading and re-compressing the taken image) got foiled because the Bitmap's compress method does not allow any encoding parameters besides format name and compression factor as far as I could determine: bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); My preferred solution would be to instruct the photo app to save in progressive mode. The next best option would be a Java algorithm that losslessly converts the stored jpeg to progressive (jpegtran does this on Linux, but it is in C and relies on libjepeg). The next best would a method to specify the relevant encoding parameters to android allowing me to re-compress it, or an alternative Java library that does the same. Further research revealed that the algorithms are already there ( /system/lib/libjpeg.so ) with the sources in ~/android-sdk-linux/source-tree/external/jpeg -- but there do not seem to be JNI wrappers readily available.
Tags (comma-separated)
Save Edits
Cancel