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