2012-03-08 2 views
1

En bref, l'application est destiné à effectuer les opérations suivantes:UIGraphicsGetImageFromCurrentImageContext faire pivoter l'image à volonté?

  1. L'utilisateur sélectionnera des photos dans l'iPhone (via ALAssets). Cette partie est bien.
  2. La photo sélectionnée apparaîtra sur une autre vue, dans une sous-vue rectangulaire plus petite.
  3. Lors de l'utilisation de la vignette ALAsset, l'image s'affiche correctement dans la sous-vue. Cependant, la résolution est mauvaise, j'essaie donc d'utiliser une image à plus haute résolution.
  4. Lors de l'utilisation de l'image en pleine résolution, puis en la plaçant dans la vue, toute photo en mode portrait sera pivotée de 90 degrés dans le sens inverse des aiguilles d'une montre.

code-sage, cela, il ressemble à ceci:

//ImageView is the UIImageView subview that will hold the selected photo image. 
//This code works ok, but I'd rather have a higher resolution photo. 
[imageView setClipsToBounds:YES]; 
[imageView setContentMode:UIViewContentModeScaleAspectFill]; 
[imageView setImage:[UIImage imageWithCGImage:[selectedPhoto thumbnail]]; 

Maintenant, voici le code où je tente d'utiliser une image de résolution supérieure, mais l'image dans imageView est mis en rotation -90 degrés :

[imageView setClipsToBounds:YES]; 
[imageView setContentMode:UIViewContentModeScaleAspectFill]; 

//HIGH RESOLUTION IMAGE 
ALAssetRepresentation *rep = [selectedPhoto defaultRepresentation]; 
CGImageRef iref = [rep fullResolutionImage]; 
if (iref) 
{ 
    UIImage *largeImage = [Utilities imageWithImage:[UIImage imageWithCGImage:iref] scaledToSize:CGSizeMake(CGImageGetWidth(iref)/4, CGImageGetHeight(iref)/4)]; 
    [imageView setImage:largeImage]; 
} 

Et la imageWithImage: fonction appelée il ressemble à ceci:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Comme mentionné, les photos prises en orientation paysage par l'appareil photo de l'iPhone sortent OK. Cependant, les photos prises en orientation caméra de portrait sortent en rotation de 90 degrés en quelque sorte.

Comment puis-je faire en sorte que chaque photo, qu'elle soit prise en mode portrait ou paysage, soit orientée correctement sur mon ImageView?

Toute aide serait appréciée! Je vous remercie!

+0

J'ai trouvé la réponse ici! http://stackoverflow.com/questions/3648632/alassetrepresentation-fullresolutionimages-uiimageorientation-is-wrong que je fais maintenant: ALAssetRepresentation * rep = [selectedPhoto defaultRepresentation]; CGImageRef iref = [rep fullResolutionImage]; UIImage * largeImage = [[UIImage alloc] initWithCGImage: échelle iref: 4 orientation: rep.orientation]; PS. Je n'ai pas encore pu répondre à la question, car le temps qui s'est écoulé est insuffisant. – kurisukun

Répondre