在我的项目中,我需要以锯齿形显示不同大小的图像。因此,我将来自服务的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
感谢您抽出宝贵的时间为我服务。

最佳答案

您可以使用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);

图像的宽度和高度将存储在PixelHeightPixelWidth键下的字典中(已测试png图像,可能是其他图像格式将使用不同的键)

关于ios - 如何在不转换为NSData的情况下获取UIImage(ImageURL)的高度和宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20042801/

10-10 21:01