图片旋转 解决数着拍照自动旋转90度

- (UIImage*)fixOrientation:(UIImage*)aImage {

// No-op if the orientation is already correct

if(aImage.imageOrientation== UIImageOrientationUp)

returnaImage;

// We need to calculate the proper transformation to make the image upright.

// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.

CGAffineTransform transform = CGAffineTransformIdentity;

switch(aImage.imageOrientation) {

caseUIImageOrientationDown:

caseUIImageOrientationDownMirrored:

transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);

transform = CGAffineTransformRotate(transform, M_PI);

break;

caseUIImageOrientationLeft:

caseUIImageOrientationLeftMirrored:

transform = CGAffineTransformTranslate(transform, aImage.size.width,0);

transform = CGAffineTransformRotate(transform, M_PI_2);

break;

caseUIImageOrientationRight:

caseUIImageOrientationRightMirrored:

transform = CGAffineTransformTranslate(transform,0, aImage.size.height);

transform = CGAffineTransformRotate(transform, -M_PI_2);

break;

default:

break;

}

switch(aImage.imageOrientation) {

caseUIImageOrientationUpMirrored:

caseUIImageOrientationDownMirrored:

transform = CGAffineTransformTranslate(transform, aImage.size.width,0);

transform = CGAffineTransformScale(transform, -1,1);

break;

caseUIImageOrientationLeftMirrored:

caseUIImageOrientationRightMirrored:

transform = CGAffineTransformTranslate(transform, aImage.size.height,0);

transform = CGAffineTransformScale(transform, -1,1);

break;

default:

break;

}

// Now we draw the underlying CGImage into a new context, applying the transform

// calculated above.

CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,

CGImageGetBitsPerComponent(aImage.CGImage),0,

CGImageGetColorSpace(aImage.CGImage),

CGImageGetBitmapInfo(aImage.CGImage));

CGContextConcatCTM(ctx, transform);

switch(aImage.imageOrientation) {

caseUIImageOrientationLeft:

caseUIImageOrientationLeftMirrored:

caseUIImageOrientationRight:

caseUIImageOrientationRightMirrored:

// Grr...

CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);

break;

default:

CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);

break;

}

// And now we just create a new UIImage from the drawing context

CGImageRef cgimg = CGBitmapContextCreateImage(ctx);

UIImage*img = [UIImageimageWithCGImage:cgimg];

CGContextRelease(ctx);

CGImageRelease(cgimg);

returnimg;

}

你可能感兴趣的:(图片旋转 解决数着拍照自动旋转90度)