5

在我的应用程序中,我有一个“从相机捕捉”功能,我在捕捉静止图像时使用 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?并且将仅获得矩形内的图像部分(无论捕获图像的分辨率如何),如上面的屏幕所示?我应该手动完成还是您可以建议任何数学技巧?

谢谢!

4

1 回答 1

0

您可以使用此图像裁剪类和 libray 文件,您可以获得裁剪后的大小和原点位置UIImage

http://code4app.net/ios/Custom-image-cropper/51e5f03f6803fac530000000

另外,如果您愿意,它可以动态地相应地更改裁剪图像的大小。易于使用和实施。请查看教程一次。

于 2014-07-01T06:43:11.233 回答