IOS中html5上传图片方向问题解决方法

2016-02-19 09:03 63 1 收藏

下面图老师小编要跟大家分享IOS中html5上传图片方向问题解决方法,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

用html5编写图片裁切上传,在iphone手机上可能会遇到图片方向错误问题,在此把解决方法和大家分享一下,
用到了html5的 FileReader和Canvas,如果还没有接触的同学,先了解一下其方法。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
 //此方法为file input元素的change事件 function change(){  var file = this.files[0];  var orientation;  //EXIF js 可以读取图片的元信息 https://github.com/exif-js/exif-js  EXIF.getData(file,function(){orientation=EXIF.getTag(this,'Orientation');  });  var reader = new FileReader();  reader.onload = function(e) {  getImgData(this.result,orientation,function(data){  //这里可以使用校正后的图片data了 });   }  reader.readAsDataURL(file);}
// @param {string} img 图片的base64// @param {int} dir exif获取的方向信息// @param {function} next 回调方法,返回校正方向后的base64function getImgData(img,dir,next){ var image=new Image(); image.onload=function(){  var degree=0,drawWidth,drawHeight,width,height;  drawWidth=this.naturalWidth;  drawHeight=this.naturalHeight;  //以下改变一下图片大小  var maxSide = Math.max(drawWidth, drawHeight);  if (maxSide  1024) {var minSide = Math.min(drawWidth, drawHeight);minSide = minSide / maxSide * 1024;maxSide = 1024;if (drawWidth  drawHeight) {  drawWidth = maxSide;  drawHeight = minSide;} else {  drawWidth = minSide;  drawHeight = maxSide;}  }  var canvas=document.createElement('canvas');  canvas.width=width=drawWidth;  canvas.height=height=drawHeight;   var context=canvas.getContext('2d');  //判断图片方向,重置canvas大小,确定旋转角度,iphone默认的是home键在右方的横屏拍摄方式  switch(dir){//iphone横屏拍摄,此时home键在左侧case 3:  degree=180;  drawWidth=-width;  drawHeight=-height;  break;//iphone竖屏拍摄,此时home键在下方(正常拿手机的方向)case 6:  canvas.width=height;  canvas.height=width;   degree=90;  drawWidth=width;  drawHeight=-height;  break;//iphone竖屏拍摄,此时home键在上方case 8:  canvas.width=height;  canvas.height=width;   degree=270;  drawWidth=-width;  drawHeight=height;  break;  }  //使用canvas旋转校正  context.rotate(degree*Math.PI/180);  context.drawImage(this,0,0,drawWidth,drawHeight);  //返回校正图片  next(canvas.toDataURL("image/jpeg",.8)); } image.src=img;}

来源:https://www.tulaoshi.com/n/20160219/1589319.html

延伸阅读
《侠盗猎车手5》车辆消失问题解决方法攻略 《侠盗猎车手5》PC版很多玩家碰到车辆消失的问题,什么原因?怎么解决?下面为大家带来玩家分享的解决方法,以供参考。 ​ 其实这个游戏的车辆机制我大致弄明白了,很多朋友说买的车、改的车、抢的车,会在做任务的时候出现几率不等的消失情况,甚至载具扣押都没有显示项,几十万上百万...
《上古卷轴5:天际》弹出游戏问题解决方法 玩上古5全屏时切换出桌面,再次点游戏无法弹出游戏,乱按了按发现原来可以这样解决: 切换出桌面后,点一点下面的游戏,然后用ALT+TAB切换另外一个任意的图标,再用那组合键切换到游戏,等个4,,5秒就可以弹出游戏了。 看了其他玩家说要窗口化才能解决问题,但我觉得很多人不喜欢窗口玩,所以就晒晒我...
标签: Web开发
每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题。纠结了很久,终于解决了,在这里总结一下。 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的...
标签: Web开发
自从HTML5能为我们的新网页带来更高效洁净的代码而得到更多的关注,然而唯一能让IE识别那些新元素(如article)的途径是使用HTML5 shiv,感谢remy sharp为我们提供了这个迷你脚本来解决IE支持HTML5的问题。 使用和下载 html5.js必须在页面head元素内调用(因为IE必须在元素解析前知道这个元素,所以这个js文件不能在页面底部调用。) 作...
标签: Web开发
因为标题写的是实例,所以本次就不做讲解了,因为这个实例我也算是东拼西凑整出来的,参考了大概5、6款拖拽上传的插件和demo,然后把其中好的地方挑出来,最后就成了这么一个实例,一起来看下吧(地址不能保证长久有效,如果失效请在文章最后点击demo下载):   界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,...

经验教程

260

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部