【问题标题】:Calculate image's Dimensions/Size without downloading it无需下载即可计算图像的尺寸/尺寸
【发布时间】:2015-08-16 19:45:56
【问题描述】:

有什么方法可以在不从服务器实际下载的情况下获取图像尺寸或大小。

就像图像托管在 https://500px.com/https://imgur.com/,我想做一些计算,但我也想节省带宽。如果图像尺寸很大并且用户带宽不太好,我想将图像排队以备后用。

假设 API 不提供此类信息。

【问题讨论】:

  • 除非你有一个数据库来存储这些信息,否则这是不可能的。
  • 你想要mb的大小和尺寸吗?
  • 让服务器为你做这件事。
  • 您可以尝试获取 Http 响应的大小 (mb)(内容长度)......或者如果您有 ftp 访问权限......
  • 不抱歉,我没有代码....但信息在 HttpRequest 的响应标头中...就像他的回答中的 Hasan83...代码取决于您的制作方式你的 Http 请求

标签: android


【解决方案1】:

在 NSURLConnection 的 didRecieveResponse 委托方法中,您将收到包含此类信息的响应。当且仅当那些已在服务器上设置:

以下为您获取映像的磁盘大小:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
    int state = [httpResponse statusCode];

    if (state >= 400 && state <600)
    {
         // something wrong happen
    }

    NSLog(@"Download Response : %@", [response description]);  // this shows all the info. available by server. 

    int file_size = [response expectedContentLength];
}

您可以检查大小,然后根据需要取消连接。

对于图像尺寸。检查这个question。答案声称 可以使用建议的 fastimage 类别来完成。

完成此操作的唯一合乎逻辑的方法是下载包含图像标题的图像的第一部分。其中包含图像类型(png,jpg ...)和图像尺寸等信息。我相信这个图书馆会这样做。

【讨论】:

  • 我能够按照您的建议检索"Content-Length",但我有点困惑,磁盘上的图像大小是(418KB) 但"Content-Length" 的结果是 bytes 中的 584。它真的有效吗?我测试的 URL 是图片的直接链接,如果你在浏览器上打开它,你就会下载图片。
  • 可能是服务器设置错误(不知道是否可能)。但是,也许服务器会对图像进行一些处理,添加一些签名。这可能吗?
  • 当服务器是 Windows 时,我之前遇到的唯一不同之处。它以不同的方式计算大小。因为 mac 中的 kb 是 1024 b,而 windows 中的 kb 是 1000。差异不应该那么大。
  • 图片的 URL 是图片的直接链接,如果你在浏览器上打开它就会下载图片。
  • 哪个链接?问题中的链接无法打开图片!
【解决方案2】:

我不知道这是否可能。但这是我的建议。你可以检查文件的大小。看这里:How to know the size of a file before downloading it?

如果大小大于 x,则将图像排队以备后用;-)

来自链接答案的代码:

URL url = new URL("http://server.com/file.mp3");
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
int file_size = urlConnection.getContentLength();

【讨论】:

  • 不用担心。这是来自新用户评论帖子的自动回复,很多链接都失效了,这意味着在这种情况下您的答案将毫无用处,这只是一种预防措施:)
【解决方案3】:

不下载就无法计算图片大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2013-01-17
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多