lib渐进式JPEG的完整缩略图需要多少字节



我正在尝试构建一个上传器,它分两步上传渐进式文件:

  1. 上载创建缩略图的最小字节数(0-10%)
  2. 上载缩略图的其余字节。(11%-100%)

我想这样做是为了让缩略图可以更早地使用,而不必上传单独的缩略图。拍摄用jpegtran -copy all -progressive -outfile progressive.jpg original.jpg创建的图像(3426398字节),然后用dd if=progressive.jpg of=thumb.jpg bs=1 count=350000拍摄前350000字节,我得到了一个可以工作的缩略图。

  • 原件:https://dl.dropbox.com/u/5910/thumbtest/progressive.jpg
  • 缩略图:https://dl.dropbox.com/u/5910/thumbtest/thumb.jpg

有没有办法找出我必须传输多少字节才能获得所有行都可用的图像?这样只会损失图像质量吗?

渐进式JPEG图像由一系列"扫描"组成。每次扫描为每个MCU块逐渐提供更多的信息(更多的A/C系数)。第一次扫描通常只是每个MCU的DC值。这恰好是为您提供1/8大小缩略图的完美信息量。

在JPEG文件中,每次扫描都以FFDA的SOS(扫描开始)标记开始。为了知道需要多少数据才能完全保持第一次扫描,只需在文件数据中搜索第二次扫描的开始(第二个FFDA标记),您就有了答案。由于标记字节规则,2字节序列FF DA不能是SOS标记。需要对值FF和DA进行编码的压缩数据必须编码为FF 00 DA。

最新更新