私のアプリには、「カメラからのキャプチャ」機能があり、静止画像をキャプチャするときに、Brad Larson (ty) による GPUImageFramework、GPUImageStillCamera を使用しています。
stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:
AVCaptureDevicePositionBack];
ご覧のように。Session プリセットは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
ですか? 上の画面に示すように、 (キャプチャした画像の解像度に関係なく)長方形内の画像部分のみを取得しますか? 手動で行う必要がありますか、それとも提案できる数学テクニックはありますか?
ありがとう!