2010-05-11 5 views
1

Dans mon application, je ne suis pas en utilisant les codes suivants pour recadrer l'image capturée: -Comment découper les images dans iPhone?

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
#ifdef _DEBUG 
    NSLog(@"frmSkinImage-imagePickerController-Start"); 
#endif 

    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    //======================================= 
    UIImage *image =imageView.image; 
    CGRect cropRect = CGRectMake(100, 100, 125,128); 
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect); 
    [imageView setImage:[UIImage imageWithCGImage:imageRef]]; 
    CGImageRelease(imageRef); 
    //=================================================== 
    //imgglobal = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    // for saving image to photo album 
    //UIImageWriteToSavedPhotosAlbum(imageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), self); 
    [picker dismissModalViewControllerAnimated:YES]; 

#ifdef _DEBUG 
    NSLog(@"frmSkinImage-imagePickerController-End"); 
#endif 
} 

Mais mon problème est que lorsque j'utilise l'appareil photo pour prendre la photo pour recadrer l'image capturée, il fait pivoter l'image à 90 degrés vers la droite et au cas où j'utiliserais la photothèque cela fonctionne parfaitement. Donc, pouvez-vous filtrer mes codes ci-dessus pour savoir où je me trompe.

S'il vous plaît aidez-moi ses urgents Merci à l'avance

Répondre

1

Le CGImage est un UIImage sans les méta-données, et donc l'information perd d'orientation. Je suggère que vous obteniez l'orientation de l'original [imageImage], le stocker et l'appliquer ensuite à l'image finale.

Si cela ne fonctionne pas, essayez d'appliquer un CGAffineTransformMakeRotation(90.0*0.0174532925); à l'image finale en fonction de l'orientation de l'original.

0

Le moyen le plus rapide et le plus simple est de regarder NYXImagesKit. Avec la catégorie UIImage+Resizing, vous pouvez recadrer l'image. De la documentation:

UIImage + Redimensionnement

Cette catégorie peut être utilisée pour la culture ou à l'échelle des images.

Recadrage

Vous pouvez recadrer votre image de 9 façons différentes:

En haut à gauche en haut au centre en haut à droite En bas à gauche Centré en bas en bas à droite Centre Gauche Droite Centre

UIImage * recadrée = [myImage cropToSize: (CGSize) {largeur, hauteur} usingMode: NYXCropModeCenter];

NYXCropMode est un type enum qui peut être trouvé dans le fichier d'en-tête, est utilisé pour représenter les 9 modes ci-dessus.

Questions connexes