Там нет необходимости устанавливать orientationMode
для конечного изображения. orientationMode
является индикатором поворота изображения при его рисовании. То есть, UIImage
содержит исходные, невращенные данные (обычно в формате CGImage
) и свойство orientationMode
. При рисовании UIImage
(например, при добавлении его к UIImageView
) он также будет вращать его, если необходимо.
Ваш код также нанесения изображения, и, следовательно, будет вращать его:
[sourceImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *destImage = UIGraphicsGetImageFromCurrentImageContext();
destImage
будет содержать развернутое исходные данные, и orientationMode
UIImageOrientationUp
. В результате получается, что рисунок destImage
приведет к тому же изображению с той же ориентацией, что и sourceImage
.
Единственная разница возникает, когда вы фактически используете исходные данные CGImage
от каждого (и, следовательно, игнорируете свойство orientationMode
), то целевое изображение будет поворотным вариантом источника. Если вы собираетесь работать с CGImage
в любом случае, то лучше использовать операции CGImage
уровня, чтобы изменить размер изображения, например (это происходит от http://fingertwister.tumblr.com/post/9074775714/code-to-create-a-resized-cgimage-from-a-cgimage, я не проверял это):
+ (CGImageRef)resizeCGImage:(CGImageRef)image toWidth:(int)width andHeight:(int)height {
// create context, keeping original image properties
CGColorSpaceRef colorspace = CGImageGetColorSpace(image);
CGContextRef context = CGBitmapContextCreate(NULL, width, height,
CGImageGetBitsPerComponent(image),
CGImageGetBytesPerRow(image),
colorspace,
CGImageGetAlphaInfo(image));
CGColorSpaceRelease(colorspace);
if(context == NULL)
return nil;
// draw image to context (resizing it)
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
// extract resulting image from context
CGImageRef imgRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return imgRef;
}
Ekata попробовать другое решение – user3182143
Возможный дубликат [ориентация UIImage меняется при рисовании в UIGraphicsBeginImageContext] (http://stackoverflow.com/questions/24283017/uiimage-orientation-is-changing-when-drawing-in-igigraphicsbeginimagecontext) – fishinear
@fishinear Я использовал этот код но это не сработало, вот почему я задал этот вопрос. –