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.
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!
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, –
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. –
L'ho guardato e sì funziona come voi ragazzi avete appena detto qui :) grazie. – janusbalatbat