2014-10-03 38 views
1

我嘗試從視頻中讀取一些幀。該視頻是640 x 480,但我得到的圖像只有480 x 360.有沒有辦法獲得原始大小的圖像?如何設置AVAssetImageGenerator的大小?

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) 
     [self readMovieFrames:[info objectForKey:UIImagePickerControllerMediaURL]]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)readMovieFrames:(NSURL *)url 
{ 
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:playerItem.asset]; 
    imageGenerator.requestedTimeToleranceAfter = kCMTimeZero; 
    imageGenerator.requestedTimeToleranceBefore = kCMTimeZero; 
    imageGenerator.appliesPreferredTrackTransform = YES; 
    //… 
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:requestTime actualTime:&actualTime error:&error]; 
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 
    CGImageRelease(imageRef); 
} 

回答

3

要麼使用

imageGenerator.maximumSize = CGSizeZero; 

獲得一個未縮放圖像或定義的640像素邊框,長寬比保持

imageGenerator.maximumSize = CGSizeMake(640, 640); 

希望幫助!

0
- (void)readMovieFrames:(NSURL *)url 
{ 
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:playerItem.asset]; 
imageGenerator.maximumSize = CGSizeMake(320, 239); 
// Add this line 
    imageGenerator.requestedTimeToleranceAfter = kCMTimeZero; 
    imageGenerator.requestedTimeToleranceBefore = kCMTimeZero; 
    imageGenerator.appliesPreferredTrackTransform = YES; 
    //… 
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:requestTime actualTime:&actualTime error:&error]; 
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 
    CGImageRelease(imageRef); 
} 
+0

thx,但與'imageGenerator.maximumSize = CGSizeMake(640,480);'增加我仍然只得到480 x 360圖像 – Tom 2014-10-03 09:09:30