有时我必须知道图像的宽度和高度。我使用以下代码:
UIImage *imageU = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myImage.png"]];
CGFloat imageW = CGImageGetWidth(imageU.CGImage);
CGFloat imageH = CGImageGetHeight(imageU.CGImage);
我的问题是,如果有任何其他方式来了解图像的宽度和高度(以像素为单位),而不必将图像加载到变量上,那可能会消耗内存。是否可以直接从文件中读取尺寸而不加载整个图像?
这必须适用于PNG和JPEG。
感谢。
答案 0 :(得分:1)
您可以解析包含标题中大小信息的PNG文件。请参阅Get size of image without loading in to memory。
(顺便说一下,您可以使用imageU.size
获取图像的CGSize。)
答案 1 :(得分:0)
在内存使用方面,我认为你不能“免费”这样做。您可以创建一个NSInputStream并读取/解析IHDR
部分的数据(按照@ KennyTM的链接),然后丢弃所有内容。