iOS 学习日志:调用相机拍照获得图片旋转问题
来源:互联网 发布:数据交换技术 编辑:程序博客网 时间:2024/04/30 15:17
开发的项目中需要调用系统相机或者相册获取图片当作头像使用,然而相册获取的图片可以正常使用,但是相机拍照后获取的图片存储时会自动旋转90度。
查阅多方资料找到方法重绘这张图片,使其角度变为正常的肖像照
- (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (aImage.imageOrientation == UIImageOrientationUp) return aImage; // 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) { case UIImageOrientationDown: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height); transform = CGAffineTransformRotate(transform, M_PI); break; case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformRotate(transform, M_PI_2); break; case UIImageOrientationRight: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, 0, aImage.size.height); transform = CGAffineTransformRotate(transform, -M_PI_2); break; default: break; } switch (aImage.imageOrientation) { case UIImageOrientationUpMirrored: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformScale(transform, -1, 1); break; case UIImageOrientationLeftMirrored: case UIImageOrientationRightMirrored: 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) { case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored: // 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 = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img;}
//以上资料仅为学习、记录使用 欢迎交流 一起成长
4 0
- iOS 学习日志:调用相机拍照获得图片旋转问题
- 调用相机拍照,处理图片旋转,保存图片
- 解决三星调用系统相机拍照显示图片旋转90度横着的问题
- 关于三星手机调用系统相机拍照旋转屏导致图片数据丢失问题
- 处理相机拍照后Bitmap和图片旋转问题
- iPhone上关于相机拍照的图片的旋转问题
- ios--笔记--调用相机拍照及获取图片
- iOS 调用相机拍照和选择图库图片 设置头像
- Android拍照后获得的图片旋转90度问题
- 拍照图片旋转问题
- 三星手机拍照旋转问题 调用相机拍照出现横竖屏切换?
- 三星手机拍照旋转问题 调用相机拍照出现横竖屏切换?
- 调用相机图片拍照生成图片并加水印(非获得缩略图)
- iOS 相册图片,相机图片被旋转问题 uiimage orientation
- iOS解决拍照图片 会旋转 打开变形的问题
- 关于iOS拍照图片旋转90度问题
- iOS自定义相机截取图片旋转90°的问题
- 调用系统相机拍照获取图片或者从相册中调用本地图片显示问题
- iOS 7 表视图顶部空白解决
- pc上的hosts 移植到 android上
- 信息安全与密码学5-RSA算法的介绍
- Gson与Hibernate结合使用会出现的问题
- nginx服务器部署SSL证书
- iOS 学习日志:调用相机拍照获得图片旋转问题
- Java IO流详解
- HDU 1754 区间最大值 (线段树)
- Android之单选框、复选框警告框
- 数据集可视化——tile("贴砖")
- 发布网站中的那些事儿
- Java排序之排序大综合
- VS2013下配置OpenCV2.4.11
- The first English passage