Программно определить размеры файлов изображений в комплекте - PullRequest
1 голос
/ 29 мая 2010

У меня есть большое количество файлов изображений в комплекте приложений iPhone (~ 3000), и я хочу определить размеры во время выполнения, а не сохранять эти данные в базе данных или XML-манифесте для изображений.

Есть ли способ сделать это программно?

Ответы [ 3 ]

0 голосов
/ 29 мая 2010

Утилита file Unix использует информацию заголовка файла для определения размера.В основном это требует загрузки в первом блоке файла и просеивания информации (зависит от типа файла, но, вероятно, у вас будет только один, чтобы реализовать, так как вы управляете изображениями).

0 голосов
/ 18 апреля 2012

Начиная с iOS 4, можно получить доступ к свойствам изображения без фактической загрузки изображения в память.

Вам потребуется ImageIO.framework и # import

NSURL *imageFileURL = [NSURL fileURLWithPath:imagePath];

CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL); 

if (imageSource == NULL) 
{ 
    // Error loading image ... 
} 

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache, nil]; 

CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (CFDictionaryRef)options); 

NSNumber *mImageWidth;

NSNumber *mImageHeight;

if (imageProperties) 
{   
    mImageWidth = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth); 

    mImageHeight = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); 

    CFRelease(imageProperties); 
}
0 голосов
/ 29 мая 2010

UIImage имеет свойство size, которое возвращает размеры изображения, однако я бы не рекомендовал загружать все 3000 ваших изображений в приложение для iPhone. Предварительная генерация этой информации во время сборки даст вам гораздо лучшие результаты. В противном случае вы можете использовать какое-то соглашение об именах для ваших изображений, которое кодирует размер изображения в имени файла, однако это на самом деле не так уж и отличается от хранения информации в некоторой базе данных или XML-файле;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...