如何使用Avcapture设置帧大小

时间:2013-01-14 09:27:02

标签: ios ios5 ios4

我正在使用AVCaptureSession拍照。这是我的代码:

AVCaptureSession * newSession = [[AVCaptureSession alloc] init];

// Configure our capturesession
newSession.sessionPreset = AVCaptureSessionPresetMedium;

我的图片大小为360 * 480。但这是我的问题,我想要的图像完全是280 * 200的大小。我对裁剪图像不感兴趣。是否可以通过AVCaptureSession设置图像尺寸?提前谢谢..

1 个答案:

答案 0 :(得分:3)

使用AVCapturePresets,您可以使用明确的大小来捕获视频或照片。拍摄照片后,您可以操作(裁剪,调整大小)以适合所需的尺寸,但无法设置预定的拍摄尺寸。

有可接受的预设:

NSString *const AVCaptureSessionPresetPhoto;
NSString *const AVCaptureSessionPresetHigh;
NSString *const AVCaptureSessionPresetMedium;
NSString *const AVCaptureSessionPresetLow;
NSString *const AVCaptureSessionPreset320x240;
NSString *const AVCaptureSessionPreset352x288;
NSString *const AVCaptureSessionPreset640x480;
NSString *const AVCaptureSessionPreset960x540;
NSString *const AVCaptureSessionPreset1280x720;

来源:https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVCaptureSession_Class/Reference/Reference.html

我使用的方法可以帮助您扩展到所需的大小:

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
{
    UIGraphicsBeginImageContext( newSize );
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

初始化会话&设置预设:

// create a capture session
if(session == nil){
    session = [[AVCaptureSession alloc] init];
}
if ([session canSetSessionPreset:AVCaptureSessionPreset320x240]) {
    session.sessionPreset = AVCaptureSessionPreset320x240;
}
else {
    NSLog(@"Cannot set session preset");
}