当通过AVAssetImageGenerator获取视频的UIImage时,当视频以纵向方向拍摄时,我正在返回图像旋转(技术上它们不是)。如何判断视频的拍摄方向,然后正确旋转图像?
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];
答案 0 :(得分:202)
最简单的方法是将图像生成器上的appliesPreferredTrackTransform
属性设置为YES,然后它会自动为您进行转换。
答案 1 :(得分:19)
使用上一个答案创建具有录制方向的图像的复制和粘贴解决方案。
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);