通过 Afnetworking 2.0 从 URL 获取一半大小的 UIImage

Posted

技术标签:

【中文标题】通过 Afnetworking 2.0 从 URL 获取一半大小的 UIImage【英文标题】:Getting half size of UIImage from URL by Afnetworking 2.0 【发布时间】:2014-10-28 07:14:39 【问题描述】:

我正在执行以下操作来确定块期间下载图像的大小,然后我将相应地设置 uiimageview 的大小。 如何通过 Afnetworking 获取 UIImage 的实际大小,请帮助我。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: str1]];

__weak UIImageView *weakImageView = cell.imageView;

[cell.imageView  setImageWithURLRequest:request
                       placeholderImage:[UIImage imageNamed:@"Plceholder-50X60.png"]
                                success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
 
     NSLog(@"image = %f, imageheight = %f", image.size.width, image.size.height);

     UIImageView *strongImageView = weakImageView; //make local strong reference to protect against race conditions
     if (!strongImageView) return;

 failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
     NSLog(@"Request failed with error: %@", error);
 ];

【问题讨论】:

【参考方案1】:

图像的大小取决于磁盘上图像文件的名称。

如果文件的名称是Plceholder-50X60.png,它的实际大小是image.sizeimage.scale 1.0,但如果它的名称是Plceholder-50X60@2x.png,它的实际大小是CGSizeMake(image.size.width*image.scale, image.size.height*image.scale)image.scale 2.0。

诀窍在imageNamed:方法中,见imageNamed:的参考:

在运行 ios 4 或更高版本的设备上,如果 设备的屏幕比例为 1.0。如果屏幕的比例为 2.0, 此方法首先搜索具有相同文件名的图像文件 附加一个@2x 后缀。例如,如果文件名是 按钮,它首先搜索按钮@2x。如果找到 2x,则加载 该图像并设置返回的 UIImage 对象的 scale 属性 到 2.0。否则,它会加载未修改的文件名并设置比例 属性为 1.0。

结论:无论图片文件的名称是什么,都可以使用CGSizeMake(image.size.width*image.scale, image.size.height*image.scale)获取图片的实际大小。

【讨论】:

以上是关于通过 Afnetworking 2.0 从 URL 获取一半大小的 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

缓存图像,使其不会在 reloadData 调用时重新加载 - AFNetworking 2.0 setImageWithUrl

obj-c AFNetworking 2.0 POST 请求不起作用

AFNetworking 3.2.0 '配置的安全策略只能应用于具有安全基本 URL(即 https)的管理器

从 AFNetworking 1.3 迁移到 AFNetworking 2.0 的问题

Afnetworking 2.0 发布方法错误

AFNetworking 2.0:传递标头信息