现在的位置: 首页 > 综合 > 正文

ios 图片方向纠正

2017年08月15日 ⁄ 综合 ⁄ 共 2190字 ⁄ 字号 评论关闭
- (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;  
} 

转载自:http://blog.csdn.net/demoker/article/details/21806291?utm_source=tuicool

抱歉!评论已关闭.