- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要通过 Android 手机(低至 10kByte/s)的非常低带宽连接发送图像,并希望以逐行(隔行扫描)模式发送它们,以便用户在在漫长的传输过程中,另一端已经开始看到图像。现在,我正在使用常规照片应用创建图像:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
但这会创建非渐进式 照片,而且我无法发现如何说服它以其他方式进行。我探索的第二个选项(读取并重新压缩拍摄的图像)被挫败了,因为据我所知,位图的压缩方法不允许除了格式名称和压缩因子之外的任何编码参数:
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);
我的首选解决方案是指示照片应用以渐进模式保存。
下一个最佳选择是将存储的 jpeg 无损地转换为渐进式的 Java 算法(jpegtran 在 Linux 上执行此操作,但它在 C 中并依赖于 libjepeg)。
下一个最好的方法是为 android 指定相关的编码参数,允许我重新压缩它,或者使用一个替代的 Java 库来做同样的事情。
进一步的研究表明算法已经存在 (/system/lib/libjpeg.so
),源代码在 ~/android-sdk-linux/source-tree/external/jpeg
-- 但似乎没有现成可用的 JNI 包装器。
最佳答案
你看过这份文件吗?
http://docs.oracle.com/javase/6/docs/api/javax/imageio/plugins/jpeg/JPEGImageWriteParam.html
好像有write progressive的支持。
或者,您可以使用例如OpenJPEG通过 JNI。参见 http://www.linux-mag.com/id/7697/作为开始。
关于java - 如何在 Android 上创建渐进式 JPEG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976936/
我是一名优秀的程序员,十分优秀!