我正在尝试构建一个上传器,它分两步上传渐进式文件:
我想这样做是为了让缩略图更早可用,而不必上传单独的缩略图。
拍摄由
jpegtran -copy all -progressive -outfile progressive.jpg original.jpg
创建的图像(3426398 字节)然后用 dd if=progressive.jpg of=thumb.jpg bs=1 count=350000
取前 350000 个字节我得到了一个有效的缩略图。有没有办法找出我必须传输多少字节才能获得所有行都可用的图像?从而只会失去图像质量?
最佳答案
渐进式 JPEG 图像由一系列“扫描”组成。每次扫描逐渐为每个 MCU 块提供更多信息(更多 A/C 系数)。第一次扫描通常只是每个 MCU 的 DC 值。这恰好是为您提供 1/8 大小缩略图的完美信息量。
在 JPEG 文件中,每次扫描都以 FFDA 的 SOS(扫描开始)标记开始。为了知道完全保持第一次扫描需要多少数据,只需搜索第二次扫描(第二个 FFDA 标记)开始的文件数据,您就会得到答案。由于标记字节规则,2 字节序列 FF DA 只能是 SOS 标记。需要编码值 FF 后跟 DA 的压缩数据必须编码为 FF 00 DA。
关于jpeg - 渐进式 JPEG 的完整缩略图需要多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919839/