图像的大小

时间:2010-05-01 21:25:31

标签: iphone iphone-sdk-3.0 ipad

有时我必须知道图像的宽度和高度。我使用以下代码:

UIImage *imageU = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myImage.png"]];

CGFloat imageW = CGImageGetWidth(imageU.CGImage);
CGFloat imageH = CGImageGetHeight(imageU.CGImage);

我的问题是,如果有任何其他方式来了解图像的宽度和高度(以像素为单位),而不必将图像加载到变量上,那可能会消耗内存。是否可以直接从文件中读取尺寸而不加载整个图像?

这必须适用于PNG和JPEG。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以解析包含标题中大小信息的PNG文件。请参阅Get size of image without loading in to memory

(顺便说一下,您可以使用imageU.size获取图像的CGSize。)

答案 1 :(得分:0)

在内存使用方面,我认为你不能“免费”这样做。您可以创建一个NSInputStream并读取/解析IHDR部分的数据(按照@ KennyTM的链接),然后丢弃所有内容。