Enregistrer UIImage, le Charger dans le Mauvais sens
J'utilise le code suivant pour enregistrer et charger des images que je sélectionne à partir de la bibliothèque ou prendre l'aide de l'appareil photo:
//saving an image
- (void)saveImage:(UIImage*)image:(NSString*)imageName {
NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format.
NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it
NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; //add our image to the path
[fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image)
NSLog(@"image saved");
}
//loading an image
- (UIImage*)loadImage:(NSString*)imageName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];
return [UIImage imageWithContentsOfFile:fullPath];
}
C'est comment j'ai réglé le cueillies image doit être affichée dans mon UIImageView
:
imgView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
Cependant, quand je le ramasser et de l'image et de la configurer pour qu'il soit indiqué dans mon UIImageView
c'est bien, mais quand je charge l'image c'est souvent le mauvais sens. Des idées? Personne n'a connu ce ou savoir comment je pourrais résoudre ce problème?
Grâce.
EDIT:
Il semble donc, si vous chargez une photo qui a été prise une photo en portrait à l'envers, il charge dans cette orientation, si vous prenez une photo en mode paysage gauche il charge dans cette orientation. Des idées comment contourner ce problème? Quelle que soit l'orientation qu'ils chargent, ils reviennent toujours comme UIImageOrientationUp.
- Il suffit de regarder UIImageOrientationUp pour la UIImage docs. vous pouvez définir la propriété pour imageOrientation de UIImage objet.
- Comment puis-je appliquer cette orientation, si? J'ai pris un coup d'oeil et il semble être seulement pour les comparaisons et la rotation doit être fait manuellement.
- Veuillez vérifier mon montage.
- Vous pouvez résoudre ce problème comme ceci:[fixer l'image orentation][1] [1]: stackoverflow.com/questions/13393909/...
Vous devez vous connecter pour publier un commentaire.
Que j'ai rencontré le même problème et voici comment je l'ai résolu.
Alors que nous enregistrer l'image, nous avons besoin de enregistrer son orientation des informations avec l'image ...
Et nous charger de l'image, nous avons besoin de lire ses informations d'orientation et de l'appliquer à l'image...
orientedImage
est ce dont nous avons besoin.Merci,
La cause racine est le format PNG n'a pas d'image de l'orientation de l'information, mais le format JPEG n'. Donc, la façon la plus simple de résoudre ce problème est d'enregistrer votre fichier au format JPEG à l'aide de UIImageJPEGRepresentation()
Vérifier les informations EXIF de l'image que vous êtes en train de charger, il devrait y avoir une balise pour l'orientation. L'utilisation de la valeur pour faire pivoter votre image à la bonne orientation.
Ce site devrait vous obtenir a commencé.
http://www.impulseadventure.com/photo/exif-orientation.html
(L'application que vous avez utilisé pour afficher la photo doit avoir construit dans cette, c'est pourquoi vous voyez l'orientation correcte lors de l'ouverture de la photo)
Essayez d'enregistrer l'image de l'orientation, puis lorsque vous chargez l'image, vérifiez si c'est le bon sens, et si non, faites pivoter l'image avec CGAffineTransform ou ce que vous voulez.
Vous pouvez utiliser l'Image I/O pour enregistrer des images PNG de fichier(ou
NSMutableData
) à l'égard de l'orientation de l'image d'origine. Dans l'exemple ci-dessous j'ai enregistrer l'image au format PNG dans un fichier aupath
.cc_iOSOrientationToExifOrientation:
est une méthode deUIImage
catégorie.Vous pouvez également enregistrer l'image sur
NSMutableData
à l'aide deCGImageDestinationCreateWithData
et passerNSMutableData
au lieu deNSURL
dansCGImageDestinationCreateWithURL
.