无需下载即可计算图像的尺寸/尺寸

时间:2015-08-16 19:45:57

标签: android

是否有任何方法可以获取图像尺寸或尺寸而无需从服务器实际下载。

如果图片托管在 https://500px.com/上  或https://imgur.com/ ,我想做一些计算,但我也希望节省带宽。如果图像大小非常大并且用户带宽不太好,我想将图像排队以供日后使用。

假设API不提供此类信息。

3 个答案:

答案 0 :(得分: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 ...)和图像尺寸等信息。我相信这个库可以这样做。

答案 1 :(得分:1)

我不知道它是否可能。但这是我的小费。你可以检查文件的大小。见这里: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();

答案 2 :(得分:-1)

如果不下载,就无法计算图像尺寸。