2015-06-19 6 views
1

Я использую режим портретной съемки AVCapture +, чтобы захватить изображение. когда я показываю захваченное изображение, это нормально - отлично выглядит. Но когда я конвертирую в jpeg-представление, а затем конвертирую в base64 строку на сервер, а сервер хранит его, он уже «вращается».iOS UIImage: установка ориентации изображения без поворота самого изображения

Итак, я проверил ориентацию изображения перед отправкой на сервер: это UIImageOrientation.Right (так есть способ захвата изображения в портретном режиме, но захваченная ориентация изображения вверх? Хорошо, я сомневаюсь, что после некоторого рытья) , После того, как сервер получил изображение, он ничего не сделал, просто проигнорировал метаданные о ориентации, я думаю.

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

Итак, есть ли способ установить ориентацию без поворота изображения или после установки ориентации вверх, как сохранить ориентацию, но повернуть фактическое изображение, чтобы оно выглядело правильно?

ответ

7
- (UIImage *)removeRotationForImage:(UIImage*)image { 
    if (image.imageOrientation == UIImageOrientationUp) return image; 

    UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale); 
    [image drawInRect:(CGRect){0, 0, image.size}]; 
    UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return normalizedImage; 
} 
+1

может просто объяснить эту часть кода немного? –

3

быстры версия oldrinmendez ответ

func removeRotationForImage(image: UIImage) -> UIImage { 
    if image.imageOrientation == UIImageOrientation.Up { 
     return image 
    } 

    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale) 
    image.drawInRect(CGRect(origin: CGPoint(x: 0, y: 0), size: image.size)) 
    let normalizedImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return normalizedImage 
} 
+0

Это сработало, спасибо большое. –

Смежные вопросы