2011-03-18 3 views
42

AVAssetImageGenerator를 통해 비디오의 UIImage를 가져올 때 비디오가 세로 방향으로 촬영 될 때 이미지가 회전되었습니다 (기술적으로는 그렇지 않습니다). 비디오가 촬영 된 방향을 확인한 다음 이미지를 올바르게 회전시키는 방법은 무엇입니까?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]; 

답변

174

가장 쉬운 방법은 다음이 자동으로 변환을해야한다, 다만 YES로 이미지 생성에 appliesPreferredTrackTransform 속성을 설정하는 것입니다.

+1

감사합니다. 나는 문서를 훑어 보았다. 그러나이 자산의 이름은 나에게 그 문제와 관련이 있다고 제안하지 않았다. –

+0

아름다운 솔루션. 치료를해라. – imnk

+3

많은 감사, 내 하루를 구 했어요! – cyrilPA

18

복사 및 붙여 넣기 솔루션을 사용하면 이전 답변을 사용하여 기록 방향으로 이미지를 만들 수 있습니다.

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); 
관련 문제