C#在没有下载整个文件的情况下获取Web上图像的宽度/高度?

mpe*_*pen 4 .net c# windows console

我相信JPG,宽度和高度信息存储在前几个字节中.在给定绝对URI的情况下获取此信息的最简单方法是什么?

bri*_*gge 7

首先,您可以使用Range标头请求图像的前100个字节.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Set(HttpRequestHeader.UserAgent, "Range: bytes=0-100");
Run Code Online (Sandbox Code Playgroud)

接下来,您需要解码.在UNIX file命令具有共同格式的表,并将重要信息的位置.我建议安装Cygwin并查看/usr/share/file/magic.

对于gif's和png's,您可以轻松地从前32个字节获取图像尺寸.但是,对于JPEG,@ Andrew是正确的,因为您无法可靠地获取此信息.你可以弄清楚它是否有缩略图和缩略图的大小.

获取实际的jpeg大小,您需要扫描start of frame标签.不幸的是,人们无法可靠地确定预先确定的位置,并且缩略图可以将数千个字节推入文件中.

我建议使用该range请求获取前32个字节.这将让您确定文件类型.之后,如果是JPEG,则下载整个文件,并使用库获取大小信息.