iOS图片翻转处理

来源:互联网 发布:matlab粒子群算法例子 编辑:程序博客网 时间:2024/06/06 21:44

在处理图片的过程中发现一个有意思的事情,就是有得图片选择后是呈90度翻转或者-90度翻转的情况。有得时候确实也莫名其妙。尤其是手机拍照做裁切之后,就会莫名其妙翻转。找到了解决办法在这里分享一下:

- (UIImage *)cropImage:(UIImage*)image toRect:(CGRect)rect {    CGFloat (^rad)(CGFloat) = ^CGFloat(CGFloat deg) {        return deg / 180.0f * (CGFloat) M_PI;    };    // determine the orientation of the image and apply a transformation to the crop rectangle to shift it to the correct position    CGAffineTransform rectTransform;    switch (image.imageOrientation) {        case UIImageOrientationLeft:            rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(rad(90)), 0, -image.size.height);            break;        case UIImageOrientationRight:            rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(rad(-90)), -image.size.width, 0);            break;        case UIImageOrientationDown:            rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(rad(-180)), -image.size.width, -image.size.height);            break;        default:            rectTransform = CGAffineTransformIdentity;    };    // adjust the transformation scale based on the image scale    rectTransform = CGAffineTransformScale(rectTransform, image.scale, image.scale);    // apply the transformation to the rect to create a new, shifted rect    CGRect transformedCropSquare = CGRectApplyAffineTransform(rect, rectTransform);    // use the rect to crop the image    CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, transformedCropSquare);    // create a new UIImage and set the scale and orientation appropriately    UIImage *result = [UIImage imageWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation];    // memory cleanup    CGImageRelease(imageRef);    return result;}
0 0
原创粉丝点击