@@ -28,15 +28,17 @@ - (CGImageRef)lf_cgFixOrientation {
2828
2929 CGFloat width = CGImageGetWidth (self.CGImage );
3030 CGFloat height = CGImageGetHeight (self.CGImage );
31-
31+
32+ // CGImage gets the size in normal direction.
33+ CGSize size = [UIImage lf_exchangeSizeWithOrientation: editImg.imageOrientation size: CGSizeMake (width, height)];
3234 // We need to calculate the proper transformation to make the image upright.
3335 // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
34- CGAffineTransform transform = [UIImage lf_exchangeOrientation : editImg.imageOrientation size: CGSizeMake (width, height) ];
36+ CGAffineTransform transform = [UIImage lf_exchangeTransformWithOrientation : editImg.imageOrientation size: size ];
3537
3638
3739 // Now we draw the underlying CGImage into a new context, applying the transform
3840 // calculated above.
39- CGContextRef ctx = CGBitmapContextCreate (NULL , width, height,
41+ CGContextRef ctx = CGBitmapContextCreate (NULL , size. width , size. height ,
4042 CGImageGetBitsPerComponent (editImg.CGImage ), 0 ,
4143 CGImageGetColorSpace (editImg.CGImage ),
4244 CGImageGetBitmapInfo (editImg.CGImage ));
@@ -47,11 +49,11 @@ - (CGImageRef)lf_cgFixOrientation {
4749 case UIImageOrientationRight:
4850 case UIImageOrientationRightMirrored:
4951 // Grr...
50- CGContextDrawImage (ctx, CGRectMake (0 ,0 , height, width), editImg.CGImage );
52+ CGContextDrawImage (ctx, CGRectMake (0 ,0 , size. height , size. width ), editImg.CGImage );
5153 break ;
5254
5355 default :
54- CGContextDrawImage (ctx, CGRectMake (0 ,0 , width, height), editImg.CGImage );
56+ CGContextDrawImage (ctx, CGRectMake (0 ,0 , size. width , size. height ), editImg.CGImage );
5557 break ;
5658 }
5759
@@ -63,7 +65,26 @@ - (CGImageRef)lf_cgFixOrientation {
6365 return cgimg;
6466}
6567
66- + (CGAffineTransform)lf_exchangeOrientation : (UIImageOrientation)imageOrientation size : (CGSize)size
68+ + (CGSize)lf_exchangeSizeWithOrientation : (UIImageOrientation)imageOrientation size : (CGSize)size
69+ {
70+ CGSize exSize;
71+ switch (imageOrientation) {
72+ case UIImageOrientationLeft:
73+ case UIImageOrientationLeftMirrored:
74+ case UIImageOrientationRight:
75+ case UIImageOrientationRightMirrored:
76+ // Grr...
77+ exSize = CGSizeMake (size.height , size.width );
78+ break ;
79+
80+ default :
81+ exSize = CGSizeMake (size.width , size.height );
82+ break ;
83+ }
84+ return exSize;
85+ }
86+
87+ + (CGAffineTransform)lf_exchangeTransformWithOrientation : (UIImageOrientation)imageOrientation size : (CGSize)size
6788{
6889 CGAffineTransform transform = CGAffineTransformIdentity;
6990
0 commit comments