在我的应用程序中,我有一个“从相机捕捉”功能,我在捕捉静止图像时使用 Brad Larson (ty) 的 GPUImageFramework 和 GPUImageStillCamera。
stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:
AVCaptureDevicePositionBack];
如你看到的。会话预设AVCaptureSessionPresetPhoto
在 iPhone 4 中为我提供 1529x2048 输出,在 4s (8mp) 设备中为我提供 2448x3264。
下图是我如何使用 GPUStillCamera。在这里,有一个矩形,在这种情况下,是捕获图像的裁剪矩形。
我捕获图像时的代码片段。
- (IBAction)takePhoto:(id)sender
{
[stillCamera capturePhotoAsJPEGProcessedUpToFilter:filter withCompletionHandler:^(NSData *processedJPEG, NSError *error){
//1529x2048 when iPhone 4 and 2448x3265 when on 4s
UIImage *rawImage = [[UIImage alloc]initWithCGImage:[[UIImage imageWithData:processedJPEG]CGImage]scale:1.0 orientation:UIImageOrientationUp];
**CGRect rect = CGRect{?,?,?,?};**
UIImage *imageFromRect = [rawImage imageAtRect:rect ];
}
我的问题是。我怎么知道可以传递给imageAtRect
从 中绘制子图像的方法的点 (x,y,w,h) rawImage
?并且将仅获得矩形内的图像部分(无论捕获图像的分辨率如何),如上面的屏幕所示?我应该手动完成还是您可以建议任何数学技巧?
谢谢!