【问题标题】:C#: Remote Image size without downloading itC#:远程图像大小,无需下载
【发布时间】:2012-10-23 16:38:35
【问题描述】:

我有一个图片的 URL。是否可以在不下载完整图像的情况下找出它的大小(以字节为单位)和尺寸?

编辑

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "HEAD";
HttpWebResponse resp = (HttpWebResponse)(req.GetResponse());
System.Console.WriteLine(resp.ContentLength);

我已经写了这段代码。它在前两次正常工作,第三次给出WebException 即“操作超时”,无论图像网址如何。我在这里有什么遗漏吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    不,这是不可能的。

    您可以通过发出HTTP HEAD 命令(而不是GET)来获取其大小(以字节为单位);这将仅返回 HTTP 标头,省略内容。

    图像的 HTTP 标头将返回其大小(以字节为单位):

    Content-length: 6372
    Content-type: image/jpeg
    

    但不是它的尺寸。

    所以你必须做一个HTTP GET...

    【讨论】:

    • 好的...我已经编写了一段代码,当我尝试对 3 个图像运行它时,前 2 个总是可以正常工作,但第 3 个给出 WebException 即操作超时但我能够在浏览器中打开它。这种行为有什么原因吗?
    • @RaviGupta:如果不查看您的代码,这是无法回答的。很可能您需要处理该代码才能使其正常工作。
    【解决方案2】:

    基本上,是的。如果您知道它是什么类型的图像,例如png 或 jpg(您也可以从 HTTP 连接的 MIME 类型获取此信息,您可以仅下载标头并从那里读取图像范围。另请参阅此相关问题:

    What is the header size of png, jpg/jpeg, bmp, gif and other common graphics format?

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 2011-02-05
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2011-01-10
      相关资源
      最近更新 更多