AVassetImageGenerator에서 얻은 이미지가 화면에 표시되는 방향과 일치하지 않을 때의 대응

5889 단어 SwiftiOS

발생한 문제


AVassetImageGenerator를 사용하여 애니메이션에서 정지 이미지를 추출할 때 애니메이션을 촬영할 때의 단말기의 방향에 따라 화면에 표시되는 방향과 다른 방향에서 정지 이미지를 얻는 현상이 발생하기 때문에 그 대응 방법

참조(최종 방향)



재현 코드


Swift
var asset: AVURLAsset

〜〜〜

let generator = AVAssetImageGenerator(asset: asset)
let captureImage: CGImageRef = generator.copyCGImageAtTime(asset.duration, actualTime: nil, error: nil)
var image = UIImage(CGImage: captureImage)

대응 코드


Swift
var track = asset.tracksWithMediaType(AVMediaTypeVideo)
if let media = track[0] as? AVAssetTrack {
  var naturalSize: CGSize = media.naturalSize
  var transform: CGAffineTransform = media.preferredTransform

  if transform.tx == naturalSize.width && transform.ty == naturalSize.height {
     UIImage(CGImage: captureImage scale: 1.0 orientation: UIImageOrientation.Down)
  } else if transform.tx == 0 && transform.ty == 0 {
     UIImage(CGImage: captureImage scale: 1.0 orientation: UIImageOrientation.Up)
  } else if transform.tx == 0 && transform.ty == naturalSize.width {
     UIImage(CGImage: captureImage scale: 1.0 orientation: UIImageOrientation.Left)
  } else {
     UIImage(CGImage: captureImage scale: 1.0 orientation: UIImageOrientation.Right)
  }
}

좋은 웹페이지 즐겨찾기