Обновление метаданных ориентации UIImage?
Основная задача: обновите свойство ориентации EXIF для метаданных, связанных с UIImage. Моя проблема в том, что я неНе знаю, где находится свойство ориентации во всей информации EXIF.
Запутанный фон: Я меняю ориентацию изображения, возвращаемогоimagePickerController:didFinishPickingMediaWithInfo:
поэтому я думаю, что мне нужно обновить метаданные перед сохранением изображения с помощью.writeImageToSavedPhotosAlbum:(CGImageRef)imageRef metadata:(NSDictionary *)metadata
Другими словами, если я не изменю это, метаданные будут содержать старую / начальную ориентацию и, следовательно, будут ошибочными. Причина, по которой я меняю ориентацию, заключается в том, что она постоянно сбивает меня с толку, когда я запускаюCore Image
рутина обнаружения лица. Фотосъемка с iPhone (устройство) в портретном режиме с использованием передней камеры, ориентацияUIImageOrientationRight
(3). Если я переписать изображение, чтобы ориентацияUIImageOrientationUp
(0), я получаю хорошие результаты распознавания лиц. Для справки, процедура перезаписи изображения приведена ниже.
Вся эта ориентация камеры мне кажется очень запутанной, и мне кажется, что я все глубже копаюсь в кодовой дыре. Я посмотрел на сообщения (Вот,Вот а такжеВот, И согласно этому посту (https://stackoverflow.com/a/3781192/840992):»
Камера на самом деле является альбомной, поэтому вы поднимаетесь или опускаетесь при съемке в альбомной ориентации и влево или вправо при съемке в портретной ориентации (в зависимости от того, как вы держите устройство). "
... что полностью сбивает с толку. Если вышеизложенное верно, я бы подумал, что мне следует ориентироваться наUIImageOrientationLeftMirrored
или жеUIImageOrientationRightMirrored
с фронтальной камерой. И ничто из этого не объясняет, почемуCIDetector
не удается девственное изображение, возвращаемое сборщиком.
Я подхожу к этой заднице задом наперед, но я могукажется, сориентироваться ... "
-(UIImage *)normalizedImage:(UIImage *) thisImage
{
if (thisImage.imageOrientation == UIImageOrientationUp) return thisImage;
UIGraphicsBeginImageContextWithOptions(thisImage.size, NO, thisImage.scale);
[thisImage drawInRect:(CGRect){0, 0, thisImage.size}];
UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return normalizedImage;
}