我正在尝试从UIImageView中的URL显示图像,我看到了一些非常特殊的结果。我正在测试的代码位于
之下imageURL = @"http://images.shopow.co.uk/image/user_dyn/1073/32/32";
imageURL = @"http://images.shopow.co.uk/assets/profile_images/default/32_32/avatar-male-01.jpg";
NSURL *imageURLRes = [NSURL URLWithString:imageURL];
NSData *imageData = [NSData dataWithContentsOfURL:imageURLRes];
UIImage *image = [UIImage imageWithData:imageData];
NSLog(@"Image Data: %@", imageData);
在它的当前形式中,我可以看到输出窗口中的数据,这是我所期望的。但是如果注释掉第二个imageURL,那么我引用第一个我得到空数据,因此imageWithData返回nil。可能更令人困惑的是,第一个图像与第二个图像基本相同,但它是通过PHP处理脚本完成的。我几乎可以肯定,这不是造成问题的脚本,因为如果我使用它而不是
imageURL = @"http://images.shopow.co.uk/image/product_dynimg/389620/32/32"
显示图像,并使用相同的图像处理脚本。我很难找到导致这种情况发生的图像的任何差异。任何帮助将不胜感激。
答案 0 :(得分:0)
这与服务器配置有关。
$ curl -v http://images.shopow.co.uk/assets/profile_images/default/32_32/avatar-male-01.jpg
返回非零Content-Length
和实际图像位。当我这样做时:
$ curl -v http://images.shopow.co.uk/image/user_dyn/633/32/32
我得到以下标题和零长度响应:
> GET http://images.shopow.co.uk/image/user_dyn/633/32/32 HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: images.shopow.co.uk
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< Date: Thu, 18 Oct 2012 10:51:31 GMT
< Server: Apache/2.2.3 (Red Hat)
< X-Powered-By: PHP/5.3.15
< Vary: Accept-Encoding,User-Agent
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Proxy-Connection: Keep-Alive
< Connection: Keep-Alive
令人惊讶的是,在浏览器中,两个链接都可以工作并返回图像。
更新:我想通了。这是用户代理。试试这样:
$ curl -v \
-A "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" \
http://images.shopow.co.uk/image/user_dyn/633/32/32
然后你得到你的图像位。