在我的应用程序中,我有一个'从相机捕获'功能,我正在使用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
绘制子图像?并且只会获得矩形内的图像部分(,无论拍摄图像的分辨率如何),如上面的屏幕所示?我应该手动完成,还是有建议的数学技巧?
谢谢!
答案 0 :(得分:0)
您可以使用此图像裁剪类和libray文件,您可以获取裁剪UIImage
的大小和原点位置。
http://code4app.net/ios/Custom-image-cropper/51e5f03f6803fac530000000
如果你想要它可以动态地相应地改变裁剪图像的大小。易于使用和实施。请查看一下教程。