最近做了个有关图像处理的APP,里面涉及到拍照和从相册读图,测试时发现一个神奇的问题。

当我用后置摄像头拍照,然后将拍摄到的图片显示在APP界面上时,图片一切正常,然后读取图片像素信息,再用像素信息生成图片,按理说,新生成的图像和原图像应该是一样的,但是新生成的图片自动向左旋转了90度,如果把手机向左横过来拍照,处理后的照片倒是不旋转。上网搜了这个问题,没有直接的回答,有可能是因为我的问题描述的不够清晰,后面机缘巧合看到一篇博客,提到:

iPhone拍出的图像,包含一个属性:imageOrientation,这个属性有:

typedef NS_ENUM(NSInteger, UIImageOrientation) {UIImageOrientationUp,            // default orientationUIImageOrientationDown,          // 180 deg rotationUIImageOrientationLeft,          // 90 deg CCWUIImageOrientationRight,         // 90 deg CWUIImageOrientationUpMirrored,    // as above but image mirrored along other axis. horizontal flipUIImageOrientationDownMirrored,  // horizontal flipUIImageOrientationLeftMirrored,  // vertical flipUIImageOrientationRightMirrored, // vertical flip
};

前四个好理解,就是正向、顺时针或逆时针转90度、逆时针旋转90度、顺时针旋转90度;后四个其实就是在前四个的基础上以中线为基准水平镜像、垂直镜像。被我处理过的UIImage不再有imageOrientation这个属性了,所以就按照UIImageOrientationUp默认正向显示了。所有,在获取到图像时,利用CGContext将它转正了,就OK了!

iPhone摄像头拍照后图像旋转相关推荐

  1. Android开发之拍照后图片旋转的问题

    经过测试,国产手机拍照无问题,国外手机拍照后自动选装90度了看图:主要有Google手机和三星手机都会有这个问题 解决办法也很简单说下思路: 首先获取图片被旋转的角度然后通过matrix.postRo ...

  2. 在微信小程序中 调用前置摄像头拍照 后置摄像头拍照扫码

    1.需求:点击扫码按钮,扫描二维码识别单号    实现:  <view class="getcode" bindtap="scanCode"> &l ...

  3. H5调用手机摄像头拍照,如何压缩后上传

    H5调用手机摄像头拍照后,怎样压缩再上传? 实际的压缩功能,就是利用canvas画布功能,将图片进行裁剪后保存图片的base64数据流,然后上传. 案例全部代码,示下: <!DOCTYPE ht ...

  4. Android 拍照后图片的旋转,合并,兼容性 相机开发

    在看这篇文章之前,我建议先看相机开发基础 针对这个功能需要做自定义相机,根据Camera相机类和SurfaceView类来实现自定义图形预览拍照功能. 但在实现过程中出现几个难点: 1.如何将自己产品 ...

  5. Python黑客系列之——控制自己的手机摄像头拍照,并自动发送到邮箱。

    前言 嗨喽,大家好~今天教大家玩个花的,加入你手机被人偷了或者捡走了,那么如何找到这个人呢?通过定位系统可以,那么还有什么办法是可以让别人给你送回来的方法吗?这就是今天咱们的一个要实现的一个案例! 今 ...

  6. Python控制自己的手机摄像头拍照,并把照片自动发送到邮箱

    前言 今天这个案例,就是控制自己的摄像头拍照,并且把拍下来的照片,通过邮件发到自己的邮箱里. 想完成今天的这个案例,只要记住一个重点:你需要一个摄像头 思路 通过opencv调用摄像头拍照保存图像本地 ...

  7. 【Python】控制自己的手机摄像头拍照,并自动发送到邮箱

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 今天这个案例,就是控制自己的摄像头拍照, 并且把拍下来的照片,通过邮件发到自己的邮箱里. 想完成今天的这个案例,只要记住一个重点:你需要一个摄像头 思路 ...

  8. 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )

    文章目录 安卓直播推流专栏博客总结 一. 编写快速搭建 RTMP 服务器 Shell 脚本 二. RTMP 快速搭建方法 三.创建阿里云 RTMP 服务器镜像 四.浏览器查看直播内容 五.前置 / 后 ...

  9. 【Android RTMP】NV21 图像旋转处理 ( 图像旋转算法 | 后置摄像头顺时针旋转 90 度 | 前置摄像头顺时针旋转 90 度 )

    文章目录 安卓直播推流专栏博客总结 一. 后置摄像头顺时针旋转 90 度 二. 前置摄像头顺时针旋转 90 度 三. NV21 格式图像旋转代码 安卓直播推流专栏博客总结 Android RTMP 直 ...

最新文章

  1. 在 windows 7 和 MinGW 下编译 OpenOCD 过程
  2. char-embedding是如何输入到模型的
  3. 搜索引擎优化网页设计:最佳实践
  4. 3个常考的SQL数据分析题(含数据和代码)
  5. STM32f103——ILI9341
  6. 2020年产业互联网发展报告
  7. chisel(安装)
  8. CEGUI、LayoutEdit和TextureAtlas
  9. Front_end - - BOM和DOM
  10. 自动部署 mysql_MySQL5.7自动部署脚本(持续更新)
  11. Frida Hook 常用函数、java 层 hook、so 层 hook、RPC、群控
  12. 3DMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DMAX各种残留注册表和文件的方法...
  13. c语言逻辑运算符意义,c语言逻辑运算符怎么理解?
  14. GokeAudio是一款简约小巧的开源安卓SIP软电话客户端
  15. 【WPS】中插入“公式”后行距不正常的解决办法
  16. matlab format rat,format rat
  17. AURIX TC397 Multicore 多核
  18. wifi之1M传输速率时占空比
  19. php error_reporting(0);,php error_reporting()函数的用法举例(错误捕捉)
  20. App Extension

热门文章

  1. KubeVirt with YRCloudFile 擦出创新的火花
  2. Firefox扩展初接触
  3. 碰撞检测 碰撞检测,,碰撞检测是很多动画中必不可少的
  4. Apache服务器安装SSL证书
  5. Android基础入门教程——1.1 背景相关与系统架构分析
  6. hive:创建udf函数过滤emoji表情等特殊字符
  7. 苹果微信更新不了最新版本_微信最新版本可以更改微信号了!还有大量功能更新!...
  8. 听起来你的咕噜功能虽然您当前的赚取加盟文凭在线
  9. 正则表达式nbsp;特殊用法
  10. java作用域外调用对象,Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。 如果某个对象只在同一请求中共享,通过调用哪个类 的setAttribute方法设置属性。( )...