Skip to content

Instantly share code, notes, and snippets.

@alexandrius
Created February 4, 2015 07:34
Show Gist options
  • Save alexandrius/7349527fc06b216ab4d5 to your computer and use it in GitHub Desktop.
Save alexandrius/7349527fc06b216ab4d5 to your computer and use it in GitHub Desktop.
func fixOrientation (image: UIImage) -> UIImage {
if (image.imageOrientation == UIImageOrientation.Up){
return image
}
var transform = CGAffineTransformIdentity;
switch (image.imageOrientation) {
case UIImageOrientation.Down, UIImageOrientation.DownMirrored:
transform = CGAffineTransformTranslate(transform, image.size.width, image.size.height);
transform = CGAffineTransformRotate(transform, CGFloat(M_PI));
break;
case UIImageOrientation.Left, UIImageOrientation.LeftMirrored:
transform = CGAffineTransformTranslate(transform, image.size.width, 0);
transform = CGAffineTransformRotate(transform, CGFloat(M_PI_2));
break;
case UIImageOrientation.Right, UIImageOrientation.RightMirrored:
transform = CGAffineTransformTranslate(transform, 0, image.size.height);
transform = CGAffineTransformRotate(transform, CGFloat(-M_PI_2));
break;
case UIImageOrientation.Up, UIImageOrientation.UpMirrored:
break;
}
switch (image.imageOrientation) {
case UIImageOrientation.UpMirrored, UIImageOrientation.DownMirrored:
transform = CGAffineTransformTranslate(transform, image.size.width, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
case UIImageOrientation.LeftMirrored, UIImageOrientation.RightMirrored:
transform = CGAffineTransformTranslate(transform, image.size.height, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
case UIImageOrientation.Up, UIImageOrientation.Down, UIImageOrientation.Left, UIImageOrientation.Right:
break;
}
var ctx = CGBitmapContextCreate(nil, UInt(image.size.width), UInt(image.size.height),
CGImageGetBitsPerComponent(image.CGImage), 0,
CGImageGetColorSpace(image.CGImage),
CGImageGetBitmapInfo(image.CGImage));
CGContextConcatCTM(ctx, transform);
switch (image.imageOrientation) {
case UIImageOrientation.Left, UIImageOrientation.LeftMirrored, UIImageOrientation.Right, UIImageOrientation.RightMirrored:
CGContextDrawImage(ctx, CGRectMake(0,0,image.size.height,image.size.width), image.CGImage);
break;
default:
CGContextDrawImage(ctx, CGRectMake(0,0,image.size.width,image.size.height), image.CGImage);
break;
}
var cgimg = CGBitmapContextCreateImage(ctx);
var img = UIImage(CGImage: cgimg)
return img!;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment