- (UIImage *)fixOrientation:(UIImage *)srcImg {
? ? if (srcImg.imageOrientation == UIImageOrientationUp) return srcImg;
? ? CGAffineTransform transform = CGAffineTransformIdentity;
? ? switch (srcImg.imageOrientation) {
? ? ? ? case UIImageOrientationDown:
? ? ? ? case UIImageOrientationDownMirrored:
? ? ? ? ? ? ?transform = CGAffineTransformTranslate(transform, srcImg.size.width, srcImg.size.height);
? ? ? ? ? ? ?transform = CGAffineTransformRotate(transform, M_PI);
? ? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationLeft:
? ? ? ? case UIImageOrientationLeftMirrored:
? ? ? ? ? ? transform = CGAffineTransformTranslate(transform, srcImg.size.width, 0);
? ? ? ? ? ? transform = CGAffineTransformRotate(transform, M_PI_2);
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationRight:
? ? ? ? case UIImageOrientationRightMirrored:
? ? ? ? ? ? transform = CGAffineTransformTranslate(transform, 0, srcImg.size.height);
? ? ? ? ? ? transform = CGAffineTransformRotate(transform, -M_PI_2);
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationUp:
? ? ? ? case UIImageOrientationUpMirrored:
? ? ? ? ? ? break;
? ? }
? ? switch (srcImg.imageOrientation) {
? ? ? ? case UIImageOrientationUpMirrored:
? ? ? ? case UIImageOrientationDownMirrored:
? ? ? ? ? ? transform = CGAffineTransformTranslate(transform, srcImg.size.width, 0);
? ? ? ? ? ? transform = CGAffineTransformScale(transform, -1, 1);
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationLeftMirrored:
? ? ? ? case UIImageOrientationRightMirrored:
? ? ? ? ? ? transform = CGAffineTransformTranslate(transform, srcImg.size.height, 0);
? ? ? ? ? ? transform = CGAffineTransformScale(transform, -1, 1);
? ? ? ? ? ? break;
? ? ? ? case UIImageOrientationUp:
? ? ? ? case UIImageOrientationDown:
? ? ? ? case UIImageOrientationLeft:
? ? ? ? case UIImageOrientationRight:
? ? ? ? ? ? break;
? ? }
? ? CGContextRef ctx = CGBitmapContextCreate(NULL, srcImg.size.width, srcImg.size.height,?CGImageGetBitsPerComponent(srcImg.CGImage), 0,?CGImageGetColorSpace(srcImg.CGImage),?CGImageGetBitmapInfo(srcImg.CGImage));
? ? CGContextConcatCTM(ctx, transform);
? ? switch (srcImg.imageOrientation) {
? ? ? ? case UIImageOrientationLeft:
? ? ? ? case UIImageOrientationLeftMirrored:
? ? ? ? case UIImageOrientationRight:
? ? ? ? case UIImageOrientationRightMirrored:
? ? ? ? ? ? CGContextDrawImage(ctx, CGRectMake(0,0,srcImg.size.height,srcImg.size.width), srcImg.CGImage);
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? CGContextDrawImage(ctx, CGRectMake(0,0,srcImg.size.width,srcImg.size.height), srcImg.CGImage);
? ? ? ? ? ? break;
? ? }
? ? CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
? ? UIImage *img = [UIImage imageWithCGImage:cgimg];
? ? CGContextRelease(ctx);
? ? CGImageRelease(cgimg);
? ? return img;
}