2012-12-26 38 views
3

有没有什么办法可以让android知道JPEG格式而不解码整个图像? 通过格式我的意思是基线,逐行等如何在不解码整个图像的情况下知道jpeg格式(android)

+0

这似乎太低级了,所以我会说没有可用的方法。为什么你需要知道这样的_implementation detail_? –

+0

我正在尝试显示非常大的JPEG文件(30000x30000)。在调用BitmapFactory.decodeStream()之前,可以通过设置inSampleSize选项来显示基线(广泛使用的格式)格式JPEG。但是,逐行格式的JPEG需要通过本地代码(skia,libjpeg)完全解码。这个尺寸的完全解码图像将需要数百兆字节,因此许多其他应用程序被杀手杀死,并最终没有图像显示。 – dudul

+0

那么,你有一个合理的理由,毕竟泄漏的实现细节... –

回答

9
  1. 从文件扩展名,即* .jpg或* .JPEG

  2. Magic numbers。大多数文件格式在 文件开始处有一些特殊字节,表示该文件的类型。

  3. 其余的详细信息在EXIF data中交错,您将不得不阅读该文件的一部分。

  4. 使用Markers将文件分成段,0xFF, 0xC0指示基线DCT,0xFF, 0xC2指示渐进式DCT。另外,如果文件具有多于一个扫描标记的开始,则它是渐进式jpeg。看看你是否在你的文件中打这些字节序列。

+0

我需要的是关于JPEG文件的其他信息,无论是基线还是渐进式 – dudul

+0

@dudul在答案中更新。 –

+0

这就是我想要的。谢谢! – dudul

相关问题