AVAssetImageGenerator provides images rotated

前端 未结 3 1791
名媛妹妹
名媛妹妹 2020-12-08 06:29

When obtaining a UIImage of a video via AVAssetImageGenerator, I\'m getting back images rotated (well, technically they\'re not) when the video is shot in portrait orientati

相关标签:
3条回答
  • 2020-12-08 06:50

    Here is the solution in swift version 4:

    func thumbnailImageForFileUrl(_ fileUrl: URL) -> UIImage? {
        let asset = AVAsset(url: fileUrl)
        let imageGenerator = AVAssetImageGenerator(asset: asset)
        imageGenerator.appliesPreferredTrackTransform = true
    
        do {
    
            let thumbnailCGImage = try imageGenerator.copyCGImage(at: CMTimeMake(1, 60), actualTime: nil)
            return UIImage(cgImage: thumbnailCGImage)
    
        } catch let err {
            print(err)
        }
    
        return nil
    }
    
    0 讨论(0)
  • 2020-12-08 07:06

    The easiest way is to just set the appliesPreferredTrackTransform property on the image generator to YES, then it should automatically do the transformation for you.

    0 讨论(0)
  • 2020-12-08 07:07

    The copy and paste solution to create image with the recording orientation using the previous answer.

    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);
    
    0 讨论(0)
提交回复
热议问题