2012-08-06 5 views
5

Nella mia app, ho un 'Acquisizione da Camera' funzione, sto usando GPUImageFramework da Brad Larson (ty), GPUImageStillCamera mentre si scattano fotografie.Come posso calcolare la dimensione delle colture (rect) del UIImage con diversa risoluzione

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

come potete vedere. il preset Session è AVCaptureSessionPresetPhoto che in iPhone 4 mi dà l'uscita 1529x2048 e con il dispositivo 4s (8mp) mi dà 2448x3264.

l'immagine qui sotto è come utilizzo la GPUStillCamera. qui, c'è un rettangolo che è in questo caso il crop rect dell'immagine catturata.

Still camera output

frammento di codice quando la cattura delle immagini.

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

La mia domanda qui è. Come posso conoscere i punti (x, y, w, h) che posso passare al metodo imageAtRect che traccerà il sottoimmagine dallo rawImage? e otterrà solo la parte dell'immagine all'interno del rettangolo (indipendentemente dalla risoluzione dell'immagine acquisita) come mostrato nella schermata sopra? dovrei farlo manualmente o c'è qualche tecnica matematica che puoi suggerire?

Grazie!

+1

Se si utilizza GPUImage in ogni caso, esaminare GPUImageCropFilter. Crescerà usando lo spazio delle coordinate dell'immagine con un valore compreso tra 0,0 e 1,0, ovvero: indipendentemente dalla dimensione dell'immagine, –

+0

Paul è un buon punto. GPUImageCropFilter utilizza un sistema di coordinate normalizzato, quindi ritaglia un rettangolo indipendente dalla risoluzione dell'immagine in ingresso e gestisce il calcolo della risoluzione per l'output. –

+1

L'ho guardato e sì funziona come voi ragazzi avete appena detto qui :) grazie. – janusbalatbat

risposta

0

È possibile utilizzare questa classe di ritaglio di immagini e il file libray e si può ottenere la dimensione e la posizione di origine e di ritaglio del ritaglio UIImage.

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

Inoltre, se si desidera si può in modo dinamico in grado di cambiare la dimensione del ritaglio di conseguenza. Facile da usare e implementare. Si prega di guardare nel tutorial una volta.

Problemi correlati