我需要通过
Android手机(低至10kByte / s)的低带宽连接发送图像,并希望以逐行(隔行扫描)模式发送它们,以便另一端的用户在此期间开始看到图像.冗长的转移.现在,我正在使用常规照片应用创建图像:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
但这会产生非渐进式照片,但我无法发现如何说服它不这样做.我探索的第二个选项(读取和重新压缩拍摄的图像)被挫败了,因为Bitmap的compress方法除了格式名称和压缩因子之外不允许任何编码参数,因为我可以确定:
bitmap.compress(Bitmap.CompressFormat.JPEG,80,out);
我首选的解决方案是指示照片应用程序以渐进模式保存.
下一个最好的选择是Java算法,它无损地将存储的jpeg转换为渐进式(jpegtran在Linux上执行此操作,但它在C中并且依赖于libjepeg).
接下来最好的方法是为android指定相关的编码参数,允许我重新压缩它,或者另外一个Java库.
进一步的研究表明,算法已经存在(/system/lib/libjpeg.so),其源代码在〜/ android-sdk-linux / source-tree / external / jpeg中 – 但似乎没有JNI封装器容易可用.