iphone相机拍的照片自动旋转的问题解决

满足几个条件:

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:在上传到别的平台之前,处理之后调用这个方法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值