2012-08-06 16 views
5

? En mi aplicación, tengo una función de "Capture from Camera", estoy utilizando GPUImageFramework por Brad Larson (ty), GPUImageStillCamera cuando capturo imágenes fijas.¿Cómo puedo calcular el tamaño de recorte (rect) del UIImage con una resolución diferente

stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition: 
       AVCaptureDevicePositionBack]; 

como puede ver. el valor preestablecido de la sesión es AVCaptureSessionPresetPhoto que en el iPhone 4 me da una salida de 1529x2048 y con el dispositivo 4s (8mp) me da 2448x3264.

la siguiente imagen es cómo uso la GPUStillCamera. aquí, hay un rectángulo que es en este caso, el recorte de la imagen capturada.

Still camera output

fragmento de código cuando capture la imagen.

- (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 ]; 
} 

Mi pregunta aquí es. ¿Cómo puedo saber los puntos (x, y, w, h) que puedo pasar al método imageAtRect que dibujará una subimagen desde el rawImage? y recibirá únicamente la porción de imagen dentro del rectángulo (sin tener en cuenta la resolución de la imagen capturada) como se muestra en la pantalla de arriba? ¿Debería hacerlo manualmente o hay alguna técnica matemática que pueda sugerir?

Gracias!

+1

Si está utilizando GPUImage de todos modos, mire el GPUImageCropFilter. Será recortar utilizando una imagen espacio de coordenadas con un valor que va de 0,0 a 1,0, es decir: con independencia del tamaño de la imagen –

+0

Paul hace un buen punto. El GPUImageCropFilter utiliza un sistema de coordenadas normalizadas, por lo que recorta un rectángulo que es independiente de la resolución de la imagen de entrada y maneja el cálculo resolución de salida para usted. –

+1

Lo he visto y sí, funciona como ustedes dijeron aquí :) gracias. – janusbalatbat

Respuesta

0

Usted puede utilizar este archivo de clase y libray recorte de imágenes y se puede obtener el tamaño y la posición de origen y de la UIImage recortar.

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

Además, si usted quiere que dinámicamente se puede cambiar el tamaño de la imagen de cultivo en consecuencia. Fácil de usar e implementar. Por favor mira el tutorial una vez.

Cuestiones relacionadas