UIGraphicsGetImageFromCurrentImageContext повернуть изображение по желанию? - PullRequest
1 голос
/ 08 марта 2012

Вкратце, приложение предназначено для следующих действий:

  1. Пользователь будет выбирать из фотографий на iPhone (через ALAssets).С этой частью все в порядке.
  2. Выбранная фотография появится на другом виде в пределах меньшего прямоугольного подпредставления.
  3. При использовании миниатюры ALAsset изображение корректно отображается в подпредставлении.Однако разрешение плохое, поэтому я пытаюсь использовать изображение с более высоким разрешением.
  4. При использовании изображения с полным разрешением и последующем размещении его на снимке любая портретная фотография будет повернута на 90 градусов в противоположную сторону.по часовой стрелке.

По кодам это выглядит так:

//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]];

Теперь это код, в котором я пытаюсь использовать изображение с более высоким разрешением, но затем изображениев пределах imageView поворачивается на -90 градусов:

[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];
}

И вызываемая там функция imageWithImage: выглядит следующим образом:

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

Как уже упоминалось, фотографии, сделанные в альбомной ориентации камерой iPhone, приходятхорошоОднако фотографии, снятые в портретной ориентации камеры, получаются повернутыми на -90 градусов.

Как сделать так, чтобы каждая фотография, сделанная в портретной или альбомной ориентации, была правильно ориентирована на моем ImageView?

Любая помощь будет оценена!Спасибо!

1 Ответ

4 голосов
/ 09 марта 2012

Я нашел ответ здесь!

ALAssetRepresentation fullResolutionImage URImageOrientation неверно

Я делаю это сейчас:

UIImage * largeImage = [[UIImage alloc] initWithCGImage: масштаб iref: 4 ориентации: (UIImageOrientation) rep.orientation];

...