最近做了个有关图像处理的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. [摘录]第8章 与非美国人谈判的技巧
  2. c++ 优先队列_什么是队列?(Python队列)
  3. Flex页面跳转的五种实现方式
  4. C和C++的关键字区别
  5. android4.0.3 修改启动动画和开机声音
  6. Intel Core Enhanced Core架构/微架构/流水线 (2) - 代表处理器
  7. wannacry哭泣勒索病毒一键修复工具
  8. .net的页面在大并发下偶尔出现503错误
  9. oracle 存过 的语法,oracle 存储过程的基本语法_oracle
  10. stay here forever中文歌词
  11. python十六进制转pcap文件_python处理pcap文件——数据提取
  12. 通过PS抠出透明的玻璃瓶
  13. 计算机网络和internet选项,小编教你电脑ie的internet选项在哪
  14. html如何修改title前的小图标
  15. 手机qq2010java触屏_手机QQ2010(Java触屏)Beta2发布:操作更流畅
  16. Mac 显示隐藏文件夹
  17. #CSDN精选博文##学习必备##IT技术学习#系统化学习的第一步:建构自己的知识体系
  18. Glyphs 3 for Mac字体设计编辑工具
  19. 加法、乘法、除法贡献度计算实现
  20. k8s(五):核心技术-Service

热门文章

  1. FL Studio2020最新中文直装版水果软件
  2. 2022考研笔记-数学(高等数学预备知识)
  3. ICEM CFD结构化网格画边界层的方法
  4. 【李开复】给中国学生的第一封信——从诚信谈起 (一)
  5. [分享]老歌150首
  6. 小米10s微距模式使用教程分享
  7. Pycharm2019使用方法(六)——鼠标放代码中单击Edit后菜单功能
  8. 不可重复读和幻读的区别
  9. HEAD detached at xxxx
  10. oracle dblink 复制表,【代码备份】ORACLE数据库表同步DBLINK