Подтвердить что ты не робот

AVAssetImageGenerator обеспечивает поворот изображений

При получении UImage видео через AVAssetImageGenerator, я возвращаю обратные изображения (ну, технически это не так), когда видео снимается в портретной ориентации. Как я могу определить, какая ориентация видео была снята, а затем правильно повернуть изображение?

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
NSError *err = NULL;
CMTime time = CMTimeMake(0, 60);
CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
[generate release];
UIImage *currentImg = [[UIImage alloc] initWithCGImage:imgRef];
4b9b3361

Ответ 1

Самый простой способ - просто установить для свойства appliesPreferredTrackTransform в генераторе изображений значение YES, тогда оно должно автоматически выполнить преобразование для вас.

Ответ 2

Решение для копирования и вставки для создания изображения с ориентацией записи с использованием предыдущего ответа.

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVAssetImageGenerator* imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform = YES;
CGImageRef cgImage = [imageGenerator copyCGImageAtTime:CMTimeMake(0, 1) actualTime:nil error:nil];
UIImage* image = [UIImage imageWithCGImage:cgImage];

CGImageRelease(cgImage);