在我的项目中,我需要以锯齿形方式显示不同尺寸的图像。所以,我将来自服务的uiimages(url)转换为NSData
,然后我得到了uiimage。我的代码是
NSURL *url = [NSURL URLWithString:[[_result objectAtIndex:i ] valueForKey:@"PImage"]];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
所以我可以得到图像大小(宽度和高度),但我的问题是根据图像大小,我需要创建UIView
,这个代码对我来说很好,但是它占用太多时间(差不多25秒)加载8张图像。我认为将UIImage
转换为NSData
需要时间。有没有办法获得图像大小(宽度和高度)而不将其转换为NSData
感谢您花时间陪我。
答案 0 :(得分:1)
您可以使用ImageIO框架在不实际从磁盘加载整个图像数据的情况下获取图像属性:
@import ImageIO;
...
NSURL *imageURL = … // Init URL somehow
CGImageSourceRef imgSource = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary* imageProps = (__bridge_transfer NSDictionary*) CGImageSourceCopyPropertiesAtIndex(imgSource, 0, NULL);
NSLog(@"%@", imageProps);
CFRelease(imgSource);
图像宽度和高度将存储在PixelHeight
和PixelWidth
键下的字典中(使用png图像测试,可能是其他图像格式将使用不同的键)
答案 1 :(得分:0)
使用 EGOImageView或 AsyncImageView,而不是将网址转换为数据和UIImage
。您只需将URL传递给他们即可。再次基于图像大小的setFrame。