J'essaie de faire quelque chose qui devrait en théorie être assez simple, mais j'ai été la chasse autour de ma queue pendant des jours maintenant. J'essaie de prendre un événement tactile à partir d'une superposition d'écran, de capturer une image et de recadrer une partie de l'image autour de l'endroit où le doigt a touché.Bonne façon d'utiliser CGImageCreateWithImageInRect, UIImage et UIImagePickerController questions
Maintenant, tout mon code fonctionne bien, la superposition, les événements, le rognage, etc .... Cependant, je ne peux pas sembler obtenir le système de coordonnées de l'événement tactile pour correspondre au système de coordonnées de l'UIImage. J'ai lu tous les documents que je peux trouver, je n'arrive pas à comprendre.
Ma question principale est, ai-je besoin de prendre en compte UIImageOrientation en utilisant CGImageCreateWithImageInRect, ou est-ce que le quartz le comprend? La raison pour laquelle je demande est que j'ai une routine très simple qui recadre des images très bien, mais l'image recadrée ne semble jamais être où mon doigt pressé ??
La majeure partie de la routine est:
-(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);
}
Ainsi, le problème est que ma région recadrée (vu dans mon album photo) ne correspond jamais à la superficie réelle que je presse (il est toujours une autre partie aléatoire de la photo), ce qui me fait penser que mon système de coordonnées est éteint.
Tous les pointeurs seraient grandement appréciés, même s'il n'y a que des pointeurs vers des documents que je n'ai pas encore trouvés.
Vive Adam