我需要通过非常低带宽的连接从 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
(