假设把通过相机获取到的图片,直接进行操作, 比方裁剪, 缩放, 则会把原图片向又旋转90度。

ps: 查找过程中, 碰到了一种说法:

[objc]  view plain copy
  1. //get original photo from iOS photos
  2. //假设该图片大于2M,会自己主动旋转90度;否则不旋转
  3. 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中的方法。用它能够达到以上目的。

[objc]  view plain copy
  1. - (UIImage *)fixOrientation:(UIImage *)aImage {
  2. // No-op if the orientation is already correct
  3. if (aImage.imageOrientation == UIImageOrientationUp)
  4. return aImage;
  5. // We need to calculate the proper transformation to make the image upright.
  6. // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
  7. CGAffineTransform transform = CGAffineTransformIdentity;
  8. switch (aImage.imageOrientation) {
  9. case UIImageOrientationDown:
  10. case UIImageOrientationDownMirrored:
  11. transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);
  12. transform = CGAffineTransformRotate(transform, M_PI);
  13. break;
  14. case UIImageOrientationLeft:
  15. case UIImageOrientationLeftMirrored:
  16. transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);
  17. transform = CGAffineTransformRotate(transform, M_PI_2);
  18. break;
  19. case UIImageOrientationRight:
  20. case UIImageOrientationRightMirrored:
  21. transform = CGAffineTransformTranslate(transform, 0, aImage.size.height);
  22. transform = CGAffineTransformRotate(transform, -M_PI_2);
  23. break;
  24. default:
  25. break;
  26. }
  27. switch (aImage.imageOrientation) {
  28. case UIImageOrientationUpMirrored:
  29. case UIImageOrientationDownMirrored:
  30. transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);
  31. transform = CGAffineTransformScale(transform, -1, 1);
  32. break;
  33. case UIImageOrientationLeftMirrored:
  34. case UIImageOrientationRightMirrored:
  35. transform = CGAffineTransformTranslate(transform, aImage.size.height, 0);
  36. transform = CGAffineTransformScale(transform, -1, 1);
  37. break;
  38. default:
  39. break;
  40. }
  41. // Now we draw the underlying CGImage into a new context, applying the transform
  42. // calculated above.
  43. CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,
  44. CGImageGetBitsPerComponent(aImage.CGImage), 0,
  45. CGImageGetColorSpace(aImage.CGImage),
  46. CGImageGetBitmapInfo(aImage.CGImage));
  47. CGContextConcatCTM(ctx, transform);
  48. switch (aImage.imageOrientation) {
  49. case UIImageOrientationLeft:
  50. case UIImageOrientationLeftMirrored:
  51. case UIImageOrientationRight:
  52. case UIImageOrientationRightMirrored:
  53. // Grr...
  54. CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);
  55. break;
  56. default:
  57. CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);
  58. break;
  59. }
  60. // And now we just create a new UIImage from the drawing context
  61. CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
  62. UIImage *img = [UIImage imageWithCGImage:cgimg];
  63. CGContextRelease(ctx);
  64. CGImageRelease(cgimg);
  65. return img;
  66. }

转载于:https://www.cnblogs.com/zhchoutai/p/6881439.html

图片旋转90度解决的方法相关推荐

  1. 图片旋转90度解决办法

    如果把通过相机获取到的图片,直接进行操作, 比如裁剪, 缩放, 则会把原图片向又旋转90度. ps: 查找过程中, 碰到了一种说法: [objc]  view plain copy //get ori ...

  2. 如何将PDF图片旋转90度,盘点这个小方法

    很多时候我们在网上下载的PDF文件中有很多图片都是倒着的,这就需要将图片旋转过来使用,那么如何将PDF文件中图片旋转90度?今天就来为大家盘点这个小方法,一起来看看吧. 1.我们大家肯定都使用PDF图 ...

  3. 摄像头camera 旋转90度 解决方法

    拍照需要竖屏时的解决方法. zxing官方wiki上面的解决办法. 基本思路如下. There are 4 relative files: 1.manifest.xml, you need to ma ...

  4. html中如何使图片自动旋转90度,css实现图片旋转90度的方法

    css实现图片旋转90度的方法 发布时间:2020-08-31 11:44:39 来源:亿速云 阅读:550 作者:小新 小编给大家分享一下css实现图片旋转90度的方法,相信大部分人都还不怎么了解, ...

  5. html中如何使图片自动旋转90度,css怎么让图片旋转90度?

    css怎么让图片旋转90度?下面本篇文章给大家介绍一下使用CSS让图片旋转90度的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. css怎么让图片旋转90度? 在CSS中,可以 ...

  6. html网页中怎么让图片旋转90度,css怎么让图片旋转90度

    css让图片旋转90度的方法:利用transform属性来进行图片旋转,如[transform:rotate(90deg)].transform属性用于元素的2D或3D转换,该属性允许我们将元素旋转. ...

  7. 将base64图片旋转90度,将图片格式化(保持透明背景)

    js将图片旋转90度 function rotateBase64Img(src, edg) {var canvas = document.createElement("canvas" ...

  8. iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法

    http://www.tuicool.com/articles/IfEZre 今天写demo的时候发现, 如果把通过相机获取到的图片,直接进行操作, 比如裁剪, 缩放, 则会把原图片向又旋转90度. ...

  9. Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

最新文章

  1. 2019 年回顾:生物学年
  2. 关于我的CSDN博客的一些要说的话
  3. JVM_03 运行时数据区 [ 方法区]
  4. oracle自定义函数获取省份,oracle 自定义函数 方法 基本例子
  5. php类的举例,用类来代替递归方法,用php举例_php _ 搞代码
  6. selenium通过autoit实现上传和下载
  7. 浸油式服务器散热系统,一种服务器散热系统
  8. UIView常见方法
  9. Java 面向对象 --匿名内部类
  10. 图-3月12日-[评委计分系统3.0-双屏专业版]又有较大的专业升级,
  11. 短信验证码在线测试体验
  12. paypal注册流程
  13. Word如何快速打出公式
  14. 2021年苹果ASO商店优化技巧
  15. iPAD越狱后下载破解版的pad软件方法总录
  16. 微信Tinker 热修复介绍及接入(一)
  17. C语言推箱子(带回退,撤回,返回上一步功能)
  18. 解决google打开Github慢的问题,亲测有效
  19. webRTC(二十三):web远程androidandroid远程android的实现
  20. 华钜同创:都2022年了,你还在用那些老掉牙的选品方法???

热门文章

  1. 模拟QQ登陆,并按QQ号查询QQ基本资料
  2. 【华人学者风采】李海洲 新加坡国立大学
  3. Deepin-TIM / QQ / WeChat调整界面DPI字体大小的方法
  4. 《人无信不立》你是一个有信用的人吗?
  5. 如何用OKR搞垮一个团队
  6. log4j不打印日志的问题解决方式一
  7. 计算机科学与技术补中益气丸的成分,经典名方,补中益气丸运用解析
  8. python 机器学习(引言-莺尾花分类)
  9. 利用MATLAB画传递函数的奈奎斯特曲线
  10. 建立您自己的动画贺卡