【问题标题】:Get size of image on a web page获取网页上图像的大小
【发布时间】:2011-01-08 20:59:49
【问题描述】:

是否可以在无需实际下载实际图像的情况下检索有关网站上图像的信息?我对宽度/高度和 kb 大小感兴趣。

【问题讨论】:

    标签: c# .net image http http-headers


    【解决方案1】:

    某些图像格式在标题中包含尺寸信息。您可以解析标头以计算大小,但当然实现会因图像格式而异。

    【讨论】:

    • 由于原始问题被标记为 http-headers 标记,我相信您的意思是图像的标题,即图像二进制表示的第一个字节。对吗?
    • 是的,我指的是图片标题。
    【解决方案2】:

    没有。您可以使用 Content-Length 标头获取文件大小,但您至少需要开始下载图像才能获取宽度/高度。

    一旦图像开始下载,您就可以解析流,并按照@BrokenGlass 和@Ed Swangren 的建议尝试以这种方式找到图像的宽度/高度。

    话虽如此,但如果下载整个图像,您可以使用可用的库快速找到图像的宽度/高度,这听起来工作量很大。除非您要处理大量图像或大量图像,否则下载文件并以这种方式检查它们的大小可能会更容易。

    【讨论】:

    • 我同意 OP 实际上可能不需要解析标头,但我认为这个问题将服务于其他确实有这个特定性能限制的人。就 OP 而言,我们无从得知。
    • 非常正确,但我只想在他们的路径上放置一个警告标记,让他们知道从流媒体图像中读取标题是一项(可能)非常小的回报的巨大努力。
    • 谢谢。我实际上不知道图像是大还是小,所以在某些情况下,如果图像很大,可能是性能问题。我将研究图像格式规范,看看我是否可以减轻它。谢谢。
    【解决方案3】:

    您可以通过 HTTP HEAD 请求确定图像的文件大小,响应将包含内容长度,在 .NET 的情况下为 HttpResponse.ContentLength

    为了确定许多图像格式的宽度/高度,您只需要在文件开头的一些字节,因此您可以从它开始 - 如上所述,它取决于实际的图像格式。

    【讨论】:

    • 很好的答案,虽然不能保证 HEAD 会真正得到支持。
    猜你喜欢
    • 2014-01-21
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2018-09-11
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多