imageWithContentsOfURL
関数は画像をメモリにロードします。はい。
幸いなことに、AppleCGImageSource
は、実際のピクセル データをメモリに読み込まずに画像メタデータを読み取るために iOS4 に実装しました。このブログ投稿でその使用方法を読むことができます(便利なことに、画像の寸法を取得する方法に関するコード サンプルが提供されています)。
編集:リンクの腐敗を防ぐために、ここにコードサンプルを貼り付けました:
#import <ImageIO/ImageIO.h>
NSURL *imageFileURL = [NSURL fileURLWithPath:...];
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL);
if (imageSource == NULL) {
// Error loading image
...
return;
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache,nil];
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (CFDictionaryRef)options);
if (imageProperties) {
NSNumber *width = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
NSNumber *height = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
NSLog(@"Image dimensions: %@ x %@ px", width, height);
CFRelease(imageProperties);
}
完全な API リファレンスもここから入手できます。