Вы также можете получить Exif DateTimeOriginal
через ALAsset
.
NSDateFormatter *dateFormatter = [[NSDateFormatter new] autorelease];
dateFormatter.dateFormat = @"y:MM:dd HH:mm:ss";
NSDate *date = [dateFormatter dateFromString:[[[[asset defaultRepresentation] metadata] objectForKey:@"{Exif}"] objectForKey:@"DateTimeOriginal"]];
Для получения метаданных из ресурса требуется загрузить заголовок Exif в память (или весь файл изображения?), И эти методы, похоже, используютпул автозапуска для областей памяти.Это может привести к нехватке памяти или к еще большему сбою, если вы выполняете пакетный процесс для тысяч изображений.
Чтобы обойтись при нехватке памяти, вы можете использовать специальный пул автоматического выпуска.
NSDateFormatter *dateFormatter = [[NSDateFormatter new] autorelease];
dateFormatter.dateFormat = @"y:MM:dd HH:mm:ss";
for (ALAsset *asset in thousandsOfAssets) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSDate *date = [dateFormatter dateFromString:[[[[asset defaultRepresentation] metadata] objectForKey:@"{Exif}"] objectForKey:@"DateTimeOriginal"]];
// do something
[pool release];
}
РЕДАКТИРОВАТЬ: исправить неправильный формат даты (SS -> SS).Спасибо @ code-roadie