8

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

4

1 回答 1

1

你看过这个文件吗?

http://docs.oracle.com/javase/6/docs/api/javax/imageio/plugins/jpeg/JPEGImageWriteParam.html

它似乎有写渐进式支持。

或者,您可以通过 JNI使用例如OpenJPEG 。请参阅http://www.linux-mag.com/id/7697/作为开始。

于 2013-06-06T11:17:47.200 回答