Sto tentando di implementare una vista della videocamera iOS che riprenda immagini di forma quadrata (simile a Instagram). Il mio codice viene visualizzato sotto. La prima parte, in cui l'altezza del frame è impostata per essere uguale alla larghezza del frame, funziona come previsto e all'utente viene assegnata una vista quadrata. Il problema si verifica più tardi quando tento di applicare il frame (che è una proprietà CGRect) ai dati dell'immagine utilizzando CGImageCreateWithImageInRect. Passo il frame rect a questo metodo con l'immagine. Ma i risultati non sono ritagliati per essere quadrati. Invece l'immagine mantiene le dimensioni predefinite originali dalla telecamera iOS. Qualcuno può dirmi cosa ho fatto di sbagliato? La mia comprensione dalla documentazione di Apple è che CGImageCreateWithImageInRect dovrebbe selezionare un'area dell'immagine di forma Rect da qualche coordinata x/y iniziale. Ma non sembra che stia succedendo.Ritagliare l'immagine usando CGImageCreateWithImageInRect
//Set the frame size to be square shaped
UIView *view = imagePicker.view;
frame = view.frame;
frame.size.height = frame.size.width;
view.frame = frame;
//Crop the image to the frame dimensions using CGImageCreateWithImageInRect
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self.popoverController dismissPopoverAnimated:true];
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info
objectForKey:UIImagePickerControllerOriginalImage];
croppedImage = (__bridge UIImage *)(CGImageCreateWithImageInRect((__bridge CGImageRef)(image), frame));
imageView.image = croppedImage;
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// Code here to support video if enabled
}
}
ho provato passando un CGRect arbitrariamente piccolo ma l'output ha 0 byte di dati immagine. Ho usato CGRect rect = CGRectMake (0, 26, 50, 50) ;. Inoltre, il mio codice originale imposta l'altezza del fotogramma per essere uguale alla larghezza, quindi è più piccola della dimensione originale. È essenzialmente un quadrato 320x320 basato sulle dimensioni dello schermo dell'iPhone. – hughesdan
forse questa risposta può aiutare http://stackoverflow.com/a/10185736/1447414 – user1447414