仅使用HTTP请求下载JPG的一部分

时间:2017-01-13 12:35:16

标签: http jpeg

使用HTTP标头Range,客户端只能从服务器请求特定范围的字节。

GET myfile.jpg HTTP/1.1
"http://myhost"
Range=bytes=1000-1200

如果服务器支持此响应功能,甚至可能通过Accept-Range标头显示,则上述请求将仅从字节1000开始返回200个字节。

是否可以使用此方法从JPG图像中获取可用的部件?假设实际的JPG测量为800x1197像素。为了仅请求像素200x200和400x400之间的子图像,必须做什么?

对我而言,它似乎只能接收水平切割的图像切片。但这已经比获取完整的图像文件更好了。所以在上面的例子中我会说可以尝试下载:从200(y轴)到400(y轴)的切片然后相应地在客户端裁剪结果。

假设我们已经知道文件的内容长度及其实际图像大小,这可能是由前面的HTTP请求确定的:

内容长度,以字节为单位:88073 jpg尺寸:800x1197

我必须为此图片请求哪个字节范围?我假设JPG有一些元数据,也必须考虑在内。或者jpg的压缩是否会使这种尝试变得不可能?如果最终剪切不包含原始元素的任何元数据,那就没关系。

但是仍然可能需要一个初始请求,从一开始就需要一些字节来希望获取元数据。并且基于此,可以确定实际的字节范围。

如果有人能给我一个如何处理这个问题的提示,那将是非常好的。

1 个答案:

答案 0 :(得分:0)

JPEG在一次或多次扫描中对压缩数据进行编码。扫描不表示其长度。您必须实际解码才能到达扫描结束。扫描跨越整个图像。

如果逐步编码JPEG流,您可以一次读取流块,解码扫描,更新输出图像,并连续获得图像的精细视图。