图片旋转90度解决的方法
假设把通过相机获取到的图片,直接进行操作, 比方裁剪, 缩放, 则会把原图片向又旋转90度。
ps: 查找过程中, 碰到了一种说法:
- //get original photo from iOS photos
- //假设该图片大于2M,会自己主动旋转90度;否则不旋转
- UIImage* originalImg=[dict objectForKey:UIImagePickerControllerOriginalImage];
至于是否正确, 还没确定。
先Mark。
以下的解决的方法亲測可行。 原文:http://www.cnblogs.com/jiangyazhou/archive/2012/03/22/2412343.html
用相机拍摄出来的照片含有EXIF信息。UIImage的imageOrientation属性指的就是EXIF中的orientation信息。
假设我们忽略orientation信息。而直接对比片进行像素处理或者drawInRect等操作,得到的结果是翻转或者旋转90之后的样子。这是由于我们运行像素处理或者drawInRect等操作之后。imageOrientaion信息被删除了。imageOrientaion被重设为0,造成照片内容和imageOrientaion不匹配。
所以。在对比片进行处理之前。先将照片旋转到正确的方向,而且返回的imageOrientaion为0。
以下这种方法就是一个UIImage category中的方法。用它能够达到以上目的。
- - (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;
- }
转载于:https://www.cnblogs.com/zhchoutai/p/6881439.html
图片旋转90度解决的方法相关推荐
- 图片旋转90度解决办法
如果把通过相机获取到的图片,直接进行操作, 比如裁剪, 缩放, 则会把原图片向又旋转90度. ps: 查找过程中, 碰到了一种说法: [objc] view plain copy //get ori ...
- 如何将PDF图片旋转90度,盘点这个小方法
很多时候我们在网上下载的PDF文件中有很多图片都是倒着的,这就需要将图片旋转过来使用,那么如何将PDF文件中图片旋转90度?今天就来为大家盘点这个小方法,一起来看看吧. 1.我们大家肯定都使用PDF图 ...
- 摄像头camera 旋转90度 解决方法
拍照需要竖屏时的解决方法. zxing官方wiki上面的解决办法. 基本思路如下. There are 4 relative files: 1.manifest.xml, you need to ma ...
- html中如何使图片自动旋转90度,css实现图片旋转90度的方法
css实现图片旋转90度的方法 发布时间:2020-08-31 11:44:39 来源:亿速云 阅读:550 作者:小新 小编给大家分享一下css实现图片旋转90度的方法,相信大部分人都还不怎么了解, ...
- html中如何使图片自动旋转90度,css怎么让图片旋转90度?
css怎么让图片旋转90度?下面本篇文章给大家介绍一下使用CSS让图片旋转90度的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. css怎么让图片旋转90度? 在CSS中,可以 ...
- html网页中怎么让图片旋转90度,css怎么让图片旋转90度
css让图片旋转90度的方法:利用transform属性来进行图片旋转,如[transform:rotate(90deg)].transform属性用于元素的2D或3D转换,该属性允许我们将元素旋转. ...
- 将base64图片旋转90度,将图片格式化(保持透明背景)
js将图片旋转90度 function rotateBase64Img(src, edg) {var canvas = document.createElement("canvas" ...
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
http://www.tuicool.com/articles/IfEZre 今天写demo的时候发现, 如果把通过相机获取到的图片,直接进行操作, 比如裁剪, 缩放, 则会把原图片向又旋转90度. ...
- Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度
场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
最新文章
- 2019 年回顾:生物学年
- 关于我的CSDN博客的一些要说的话
- JVM_03 运行时数据区 [ 方法区]
- oracle自定义函数获取省份,oracle 自定义函数 方法 基本例子
- php类的举例,用类来代替递归方法,用php举例_php _ 搞代码
- selenium通过autoit实现上传和下载
- 浸油式服务器散热系统,一种服务器散热系统
- UIView常见方法
- Java 面向对象 --匿名内部类
- 图-3月12日-[评委计分系统3.0-双屏专业版]又有较大的专业升级,
- 短信验证码在线测试体验
- paypal注册流程
- Word如何快速打出公式
- 2021年苹果ASO商店优化技巧
- iPAD越狱后下载破解版的pad软件方法总录
- 微信Tinker 热修复介绍及接入(一)
- C语言推箱子(带回退,撤回,返回上一步功能)
- 解决google打开Github慢的问题,亲测有效
- webRTC(二十三):web远程androidandroid远程android的实现
- 华钜同创:都2022年了,你还在用那些老掉牙的选品方法???