• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 如何解决IOS中html5上传图片方向问题?

如何解决IOS中html5上传图片方向问题?

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含IOS,Shtml5,上传图片等相关知识,匿名希望在学习及工作中可以帮助到您
这篇文章主要介绍了IOS中html5上传图片方向问题解决方法的相关资料,需要的朋友可以参考下

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

 //此方法为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 回调方法,返回校正方向后的base64
function 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;
}

以上就是如何解决IOS中html5上传图片方向问题?的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • H5页面在iOS网页中的数字被识别为电话号码数字颜色自动被改变成蓝色
  • 用exfe.js和canvas解决移动端 IOS 拍照上传图片翻转问题(附代码)
  • HTML5和原生app如何进行交互?
  • html5和CSS 实现禁止IOS长按复制粘贴功能
  • vue全分析--Vue+Vue-router+Vuex+axios
  • IOS页面边框是显示不出来怎么办?border-image实例教程
  • H5项目开发iOS插件功能的实例代码
  • 如何解决IOS中html5上传图片方向问题?
  • HTML5实战与剖析之移动端IOS系统收缩地址导航栏功能
  • 百度钱包ios移动端html5网页无法自动关闭问题

相关文章

  • 2018-12-03关于存储详的文章推荐
  • 2018-12-03Html5的学习之旅-Html5的web Storage概述(16)
  • 2018-12-03jQuery怎么实现左右滑动的toggle
  • 2018-12-03HTML5 Canvas实现文本对齐的方法总结
  • 2018-12-03HTML中使用SVG与SVG预定义形状元素介绍
  • 2018-12-03HTML5中表格嵌套规则是什么
  • 2018-12-03HTML5 对各个标签的定义与规定:style
  • 2018-12-03HTML5实现眼睛移动效果的示例
  • 2017-08-06浅谈three.js中的needsUpdate的应用
  • 2018-12-03去一些技术大会上,自己是很菜,怎么去认识牛人?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5 标准将把互联网视频扔回到黑暗时代
    • 有哪些面向手机端且非常优秀的 HTML5 Web App?
    • HTML5游戏《坦克后援队》的示例代码分享
    • 有关定义列表的课程推荐10篇
    • html5中JavaScript removeChild 删除所有节点_html5教程技巧
    • html/css应用的方法
    • 用HTML5制作屏幕手势解锁功能
    • HTML5 Canvas像素处理使用接口介绍_html5教程技巧
    • html5基础教程常用技巧整理
    • html5定位获取当前位置并在百度地图上显示_html5教程技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有