手机拍照上传图片旋转角度问题
解决上传图片自动旋转问题
苹果手机和部分安卓手机上传图片时会发生旋转,解决问题的思路是:先获取旋转角度,再对图片旋转进行修正
1、获取旋转角度
旋转角度 | 参数 |
---|---|
0度 | 1 |
顺时针90度 | 6 |
逆时针90度 | 8 |
180度 | 3 |
方式一、exif可以获取图片的信息可利用exif获取旋转角度,地址:http://code.ciaoca.com/javascript/exif-js/此方式会有偶尔获取不到图片信息的bug,
EXIF.getData(document.getElementById('imgElement'), function(){EXIF.getAllTags(this);Orientation=EXIF.getTag(this, 'Orientation');//图像的旋转角度参数
});
方式二、此方式暂时未发现有审么bug
getOrientation = function(file, callback) {var reader = new window.FileReader();reader.onload = function(e) {var view = new window.DataView(e.target.result);if (view.getUint16(0, false) != 0xFFD8) {return callback(-2);}var length = view.byteLength,offset = 2;while (offset < length) {var marker = view.getUint16(offset, false);offset += 2;if (marker == 0xFFE1) {if (view.getUint32(offset += 2, false) != 0x45786966) {return callback(-1);}var little = view.getUint16(offset += 6, false) == 0x4949;offset += view.getUint32(offset + 4, little);var tags = view.getUint16(offset, little);offset += 2;for (var i = 0; i < tags; i++) {if (view.getUint16(offset + (i * 12), little) == 0x0112) {return callback(view.getUint16(offset + (i * 12) + 8, little));}}} else if ((marker & 0xFF00) != 0xFF00) {break;} else {offset += view.getUint16(offset, false);}}return callback(-1);};reader.readAsArrayBuffer(file);
}
使用getOrientation
getOrientation(file, function(Orientation) {Orientation//此为旋转角度参数})
2、旋转修正
如果使用了megapix-image.js插件对图片进行压缩了,即可直接使用插件的旋转,也可使用其它方式对图片旋转
function compressImg(imgData, Orientation, onCompress) {if (!imgData) return;var pictype = imgData.match(/image\/\w+/);onCompress = onCompress || function() {};var canvas = document.createElement('canvas');var img = new Image();img.onload = function() {var ctx = canvas.getContext("2d");var mpImg = new MegaPixImage(img);mpImg.render(canvas, {maxWidth: 300,maxHeight: 400,quality: 1,orientation: Orientation//旋转角度参数});onCompress(canvas.toDataURL(pictype[0])); };img.src = imgData;
}
手机拍照上传图片旋转角度问题相关推荐
- 移动端h5实现手机拍照上传图片,相册选择上传图片input type=file
移动端h5实现手机拍照上传图片,相册选择上传图片input type=file 有不足或者不对的在下方留言,有不明白的也请在下方留言,虽然我不一定能看到,话不多说上代码,注释都写好了 <!doc ...
- 兼容Android11的手机拍照上传图片和相册选择图片功能(可直接用)
//需要的权限数组 读/写/相机 private static String[] PERMISSIONS_STORAGE = {android.Manifest.permission.READ_EXT ...
- 原生js调用手机拍照功能
原生js调用手机拍照功能 此功能主要用于混合App开发时手机拍照上传图片的功能! 话不多说直接上代码! 注:此代码在浏览器中运行时会报错,必须打开调试功能在手机上运行才可以! // html部分 // ...
- 前端解决手机拍照旋转问题及图片压缩上传
1.依赖 jquery.js 2.html部分 <input class="addImage" name="loadFile" type="f ...
- android上传图片被旋转,解决android有的手机拍照后上传图片被旋转的问题
需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的 ...
- html手机上传图片去除拍照,HTML5手机拍照上传
首先需要在页面添加HTML5控件 capture="camera" 这样就可以在android5.0 或则 IOS 9.0 以上直接拉起照相机,但是这些版本之下的手机只能调用相册选 ...
- 解决android有的手机拍照后上传图片被旋转的问题
需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的 ...
- Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题
这几天犯了一个错误,初期想着甩锅给后台的- 但还好及时发现了是自身的问题~ 关联文章 Android基础进阶 - 调用拍照.获取图片(基础) Android基础进阶 - 获取.调用相册内图片(基础) ...
- 移动端手机h5上传图片旋转90度
移动端手机h5上传图片会旋转90度的问题 h5页面调用相机正常情况下都是正常的,但是有些手机横着照相的时候就会正常的,iphone正确的拍照方式是横屏的,而用户往往是竖屏拍照上传的,就相当于照相机反转 ...
最新文章
- outlook邮箱邮件大小限制_配置邮箱的邮件大小限制: Exchange 2013 帮助 | Microsoft Docs...
- ucosii任务堆栈的作用是什么呢?
- Vijos 1334 ---- NASA的食物计划(01背包强化)
- Cocos2d-x Lua中实例:帧动画使用
- linux目录详解i-node,i-node节点与链接
- 前端可视化开发-编辑器
- PHP做好防盗链的基本思想 防盗链的设置方法
- Oracle学习资料分享(含教程、笔记、题库下载与学习方法)
- 精美商业计划书PPT模版大合集(共107份,900M)
- python代码服务器上运行报错
- word如何去掉背景色
- Android发送通知
- 老牛知点所以然-Qt安装后一行命令解决:libxcb-util.so.1 => not found
- android中接口的作用是什么意思,详解Android接口Interface的使用和意义
- python带你成功复刻热门手机游戏——飞翔的小鸟
- 百度百科里的个人介绍是怎么做上去的,人物百度百科词条创建
- Android绘制跟随路径移动的圆圈
- Davinci数据可视化-新增图表类型-旭日图
- 详解电子配线架的应用
- 017 Rust死灵书之Drop标志
热门文章
- java excel行高_Java 设置Excel自适应行高、列宽
- ECCV 2022 | 清华腾讯AI Lab提出REALY:重新思考3D人脸重建的评估方法
- Tomorrow never knows?(C程序设计进阶第2周)
- Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”
- 软件测试工程师,是学习Java还是Python比较好呢?
- 嵌入式实时操作系统4——任务调度
- Hi3516EV200使用UART1笔记
- mPEG-OPSS MPEG-SPDP 甲氧基PEG巯基吡啶
- 二[2-(2,4-二氟苯基)-5-甲基吡啶][2,2‘-联(四叔丁基吡啶)]铱二(六氟磷酸)盐,1335047-34-1
- 阿里Java代码规范