满足几个条件:
1.大于2M
2.进行过处理,剪切/压缩等。
3.在别的平台显示
解决方法就是:如下?
+ (UIImage*)fixOrientation:(UIImage*)originImg {
if(originImg.imageOrientation==UIImageOrientationUp)returnoriginImg;
CGAffineTransform transform = CGAffineTransformIdentity;
switch(originImg.imageOrientation) {caseUIImageOrientationDown:caseUIImageOrientationDownMirrored: transform =CGAffineTransformTranslate(transform, originImg.size.width, originImg.size.height); transform =CGAffineTransformRotate(transform,M_PI);break;
case UIImageOrientationLeft:
case UIImageOrientationLeftMirrored:
transform =CGAffineTransformTranslate(transform, originImg.size.width,0);
transform =CGAffineTransformRotate(transform,M_PI_2);
break;
case UIImageOrientationRight:
case UIImageOrientationRightMirrored:
transform =CGAffineTransformTranslate(transform,0, originImg.size.height);
transform =CGAffineTransformRotate(transform, -M_PI_2);
break;
default:
break;
}
switch (originImg.imageOrientation) { case UIImageOrientationUpMirrored: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, originImg.size.width, 0); transform = CGAffineTransformScale(transform, -1, 1); break;
case UIImageOrientationLeftMirrored:
case UIImageOrientationRightMirrored:
transform =CGAffineTransformTranslate(transform, originImg.size.height,0);
transform =CGAffineTransformScale(transform, -1,1);
break;
default:
break;
}
CGContextRef ctx = CGBitmapContextCreate(NULL, originImg.size.width, originImg.size.height, CGImageGetBitsPerComponent(originImg.CGImage), 0, CGImageGetColorSpace(originImg.CGImage), CGImageGetBitmapInfo(originImg.CGImage)); CGContextConcatCTM(ctx, transform); switch (originImg.imageOrientation) { case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored:
CGContextDrawImage(ctx,CGRectMake(0,0,originImg.size.height,originImg.size.width), originImg.CGImage);
break;
default:
CGContextDrawImage(ctx,CGRectMake(0,0,originImg.size.width,originImg.size.height), originImg.CGImage);
break;
}
CGImageRef cgimg = CGBitmapContextCreateImage(ctx); UIImage *img = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img;
}
ps:在上传到别的平台之前,处理之后调用这个方法。