Sto provando a fare qualcosa che in teoria dovrebbe essere abbastanza semplice, ma da qualche giorno mi sto dando da fare per scappare. Sto provando a riprendere un evento touch da una sovrapposizione dello schermo, a catturare un'immagine e ritagliare una sezione dell'immagine attorno al punto in cui il dito è stato toccato.Un buon modo di utilizzare le domande CGImageCreateWithImageInRect, UIImage e UIImagePickerController
Ora tutto il mio codice funziona correttamente, la sovrapposizione, gli eventi, il ritaglio ecc .... tuttavia non riesco a ottenere il sistema di coordinate dell'evento di tocco per abbinare il sistema di coordinate di UIImage. Ho letto tutti i documenti su cui riesco a mettere le mani, non riesco a capirlo.
La mia domanda principale è, devo prendere in considerazione UIImageOrientation quando si utilizza CGImageCreateWithImageInRect o quartz lo calcola? Il motivo per cui lo chiedo è che ho una procedura molto semplice che ritaglia le immagini bene, ma l'immagine ritagliata non sembra mai dove viene premuto il mio dito?
La maggior parte della routine è:
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = =[info objectForKey:@"UIImagePickerControllerOriginalImage"];
float scaleX = image.size.width/SCREEN_WIDTH;
float scaleY = image.size.height/SCREEN_HEIGHT;
//lastTouch is saved from touchesBegan method
float x = (lastTouch.x * scaleX) - (CROP_WIDTH/2);
float y = (lastTouch.y * scaleY) - (CROP_WIDTH/2);
if(x < 0) x = 0.0;
if(y < 0) y = 0.0;
CGRect cropArea = CGRectMake(x, y, CROP_WIDTH, CROP_WIDTH);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropArea);
UIImage *swatch = [UIImage imageWithCGImage:imageRef];
//at this point I'm just writing the images to the photo album to see if
//my crop is lining up with my touch
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
UIImageWriteToSavedPhotosAlbum(swatch, nil, nil, nil);
}
Quindi, il problema è che la mia zona ritagliata (come visto nel mio album fotografico) non corrisponde l'area effettiva che premo (è sempre qualche altra parte a caso della foto), il che mi fa pensare che il mio sistema di coordinate sia disattivato.
Qualsiasi suggerimento sarebbe molto apprezzato, anche se ci sono solo indicazioni su alcuni documenti che non ho ancora trovato.
Acclamazioni Adam