今天测试项目的改变头像功能,上午一直在用模拟器测试,没有任何问题,然后刚刚使用了真机来测。发现一个问题:昨天拍的猫的照片,上传上去之后,方向不对!因此就有了本文

原因

因为模拟器是没有拍照功能的,然后使用ALAsset保存到本地的图片,方向默认是正确的。
但是真机,由于拍照的时候,会有方向的概念,所以,模拟器上传不会出现上述问题。

解决方法

直接上代码

#pragma mark - UIImagePickerController delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {if (info[UIImagePickerControllerEditedImage]) {UIImage *img = (UIImage *)info[UIImagePickerControllerEditedImage];UIImageOrientation imageOrientation = img.imageOrientation;[self saveImage:img withDirection:imageOrientation];}else {UIImage *img = (UIImage *)info[UIImagePickerControllerOriginalImage];UIImageOrientation imageOrientation = img.imageOrientation;[self saveImage:img withDirection:imageOrientation];}[picker dismissViewControllerAnimated:true completion:nil];
}- (void)saveImage:(UIImage *)image withDirection:(UIImageOrientation)direction {if(direction != UIImageOrientationUp){// 原始图片可以根据照相时的角度来显示,但UIImage无法判定,于是出现获取的图片会向左转90度的现象。// 以下为调整图片角度的部分UIGraphicsBeginImageContext(image.size);[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();// 调整图片角度完毕}//获取图片的长宽,然后截取其中居中部分的正方形CGImageRef imgRef = image.CGImage;CGFloat imgWidth  = CGImageGetWidth(imgRef);CGFloat imgHeight = CGImageGetHeight(imgRef);CGImageRef clipImgRef;if (imgWidth > imgHeight) {clipImgRef = CGImageCreateWithImageInRect(imgRef, CGRectMake((imgWidth - imgHeight)/2, 0, imgHeight, imgHeight));}else if (imgHeight > imgWidth) {clipImgRef = CGImageCreateWithImageInRect(imgRef, CGRectMake(0,(imgHeight - imgWidth)/2, imgWidth, imgWidth));}UIImage *scaleImg = [UIImage imageWithCGImage:clipImgRef];NSData *data = UIImageJPEGRepresentation([self scaleFromImage:scaleImg size:CGSizeMake(150, 150)], 1);self.showImgView.image = [UIImage imageWithData:data];
}

代码详见github

iOS上传图片方向不对处理相关推荐

  1. 上传图片方向不对 php,如何解决IOS中html5上传图片方向问题?

    这篇文章主要介绍了IOS中html5上传图片方向问题解决方法的相关资料,需要的朋友可以参考下 用html5编写图片裁切上传,在iphone手机上可能会遇到图片方向错误问题,在此把解决方法和大家分享一下 ...

  2. iOS:方向不对,努力白费,新增一份iOS市面上较完整的学习路线,为你的职业添砖加瓦

    读者分享 工作一段时间后,如何度过瓶颈期? iOS开发的你正处于一个技术瓶颈,工作迷茫失业期,学好这些,掌握这些,你会在知道该如何定义你自己方向和职业规划: 1.架构师 2.安全攻防 3.iOS进阶 ...

  3. 上传图片方向不对 php,php-上传图片时出现错误,没有这样的路径或目录

    美好的一天,我一直在学习教程,并且为使该脚本正常工作付出了很大的努力,我设法解决了许多问题,但是我遇到的一个经常出现的问题是: 第93行的/home/xxxxxxx/public_html/regFo ...

  4. iOS 手机照片上传服务器方向不对的原因以及解决方法

    苹果手机上传图片到服务器,发现图片方向不对,实践发现: 1:原因:  相机拍照后直接取出来的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的i ...

  5. IOS上传图片旋转90度问题出现原因及解决方案

    IOS上传图片旋转90度问题出现原因及解决方案 参考文章: (1)IOS上传图片旋转90度问题出现原因及解决方案 (2)https://www.cnblogs.com/justdoityangbo/p ...

  6. ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!

    很久没发文了,最近这段时间在看前端的东西,在忙微商城webapp的事,用的vue2.0开发,打算过段时间记录总结那方面的一些知识点和坑.下面进入今天的主题. 说到iOS上传图片,网上的资料满满皆是,分 ...

  7. 方向不对,努力白费,人生三大“陷阱”,你踩了几个?

    常言道,人生不如意之事十有八九,从这样的一句话里面我们看似是不应该把人生中的一些琐碎的事情看得太重,那么人生对于我们来说哪些才是最重要的呢? 人的一生说长不长说短不短,唯有看清现实,方可活得自在,豁达 ...

  8. 方向不对,努力白费(好文章)

    方向不对,努力白费 这个世界有一种鸡血,用来让你去拼命--拼命的工作.学习,为一个更高的分数,为一个更高的工资,得到更多的认可.但是如果问,这一切的意义在哪里,你知道吗? 因为没有最好只有更好,因为只 ...

  9. Grid++Report打印纸张跳页/显示不全/页脚内容不全/内容方向不对

    ●打印出现跳页问题怎么办? 答:检查模板设计内容是否超出页面设置宽.高,并保证页面设置宽高与打印纸张规格一致. eg:页面设置高为5cm,界面显示内容总高度也要设置为5cm. eg:去掉没有必要的边框 ...

最新文章

  1. ++实现 kill_如何设计并实现一个秒杀系统?(含完整代码)
  2. Linux 查看Pyhont的解释器大小
  3. HashMap?面试?我是谁?我在哪
  4. ieee文章作者对不齐怎么办呢?
  5. 用小程序·云开发打造运动圈小程序丨实战
  6. 研讨会 | 知识图谱引领认知智能+
  7. java 水表识别_水表识别 --数字的分割
  8. win10 默认程序 edge
  9. adb ps shell 查看进程_Appium学废系列(三) adb调试桥命令
  10. vue 列表 萌层 鼠标移入移出_10 分钟上手 Vue 组件 Vue-Draggable
  11. c语言课程设计找出肇事车牌,C语言课程设计报告01.doc
  12. Qt界面显示OpenCV读取的图片
  13. 转:任正非寄语2010:开放、妥协与灰度
  14. 最美情侣怎么用计算机,最美情侣参赛宣言
  15. 港交所新股发售竞争激烈:网易云音乐暗盘破发,凯莱英、顺丰同城等暂未获得足额申购
  16. 51单片机(三)数码管(超详细、必会!)
  17. 如何应付全英文的技术面试(一)
  18. linux打开笔记本摄像头驱动程序,[已解决]如何给笔记本摄像头装驱动?
  19. 【详细图文教程】网易云歌单导入Apple Music
  20. 项目测试 | Pycharm+Pyqt5+Qt Designer6+Eric7实现逻辑与界面分离

热门文章

  1. python爬虫小实例
  2. VM虚拟机局域网组网配置
  3. 转载05:全能程序员学习路线
  4. 低版本浏览器(chrome小于40 firefox小于50 ie小于9)会提示升级信息
  5. Spring之AOP 切入点表达式写法
  6. linux给红米note4x刷机,小米红米Note 4X线刷刷机教程_Note4X第三方rom系统刷机包
  7. 计算机程序设计论文2万字,【程序设计论文】核心素养下的计算机程序设计教学(共4049字)...
  8. 如何从一个大规模的文本中筛选出符合条件的记录
  9. 验证短信延迟?是哪里出现问题
  10. QtChart柱状图动态加载数据