修正ios h5上传图时的图片方向问题
function check_file(files){
//校验收集表单数据
// var formdata = new FormData();
if(!files[] || !/image\/\w+/.test(files[].type)){
$.hidePreloader();
$('.li_imgs').children('.imgs').last().children().first().removeAttr('disabled');
_deny_request = false;
return;
}
// formdata.append("imgFile0", files[0]);
//处理IOS 拍照方向
EXIF.getData(files[],function(){
Orientation = EXIF.getTag(this,'Orientation');
});
var reader = new FileReader();
reader.readAsDataURL(files[]);
reader.onload = function(e) {
getImgData(e);
}
return;
}
//e 图片的base64
function getImgData(e){
var image = new Image();
image.src = e.target.result;
image.onload = function() {
var expectWidth = this.naturalWidth;
var expectHeight = this.naturalHeight;
if (this.naturalWidth > this.naturalHeight && this.naturalWidth > ) {
expectWidth = ;
expectHeight = expectWidth * this.naturalHeight / this.naturalWidth;
} else if (this.naturalHeight > this.naturalWidth && this.naturalHeight > ) {
expectHeight = ;
expectWidth = expectHeight * this.naturalWidth / this.naturalHeight;
}
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = expectWidth;
canvas.height = expectHeight;
ctx.drawImage(this, , , expectWidth, expectHeight);
var base64 = null;
//修复ios
switch(Orientation){
case ://需要顺时针(向左)90度旋转
rotateImg(this,'left',canvas);
break;
case ://需要逆时针(向右)90度旋转
rotateImg(this,'right',canvas);
break;
case ://需要180度旋转
rotateImg(this,'right',canvas);//转两次
rotateImg(this,'right',canvas);
break;
}
base64 = canvas.toDataURL("image/jpeg", 0.7).substring();//这里处理一下base64编码头,以便php的 base64_decode可以解析,压缩一下图片,否则会413错误
displayImg(base64);
}
} //对图片旋转处理
function rotateImg(img, direction,canvas) {
//alert(img);
//最小与最大旋转方向,图片旋转4次后回到原方向
var min_step = ;
var max_step = ;
//var img = document.getElementById(pid);
if (img == null)return;
//img的高度和宽度不能在img元素隐藏后获取,否则会出错
var height = img.height;
var width = img.width;
//var step = img.getAttribute('step');
var step = ;
if (step == null) {
step = min_step;
}
if (direction == 'right') {
step++;
//旋转到原位置,即超过最大值
step > max_step && (step = min_step);
} else {
step--;
step < min_step && (step = max_step);
}
//旋转角度以弧度值为参数
var degree = step * * Math.PI / ;
var ctx = canvas.getContext('2d');
switch (step) {
case :
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, , );
break;
case :
canvas.width = height;
canvas.height = width;
ctx.rotate(degree);
ctx.drawImage(img, , -height);
break;
case :
canvas.width = width;
canvas.height = height;
ctx.rotate(degree);
ctx.drawImage(img, -width, -height);
break;
case :
canvas.width = height;
canvas.height = width;
ctx.rotate(degree);
ctx.drawImage(img, -width, );
break;
}
} /**
* android / ios 图片上传
*/
function displayImg(imgBinaryContentbase64){
remove_file_input($('.li_imgs').children('.imgs').last().children().first()); //删除旧的file域
$.showPreloader(_up_img_msg);
var data = {};
if(_IsIosDev){
data['ios'] = imgBinaryContentbase64;
}else{
data['content'] = imgBinaryContentbase64;
} $.ajax({
type:'post',
url:'?c=bzymgr/washcar&a=uploadAndroidImg&openid=<?php echo $this->openid;?>',
data:data,
dataType: "json",
async: true,
success:function(res){
if(res==''){
public_toast('上传失败,请稍后重试',);
return;
}
var html = '';
for(var i in res){
html += '<div class="imgs">\
<img src="'+res[i]+'" class="thumb_img"/>\
<b class="img_cancel" onclick="remove_img(this)">X</b>\
</div>';
//存储到localStorage
add_imgs_LocalStorage(res[i]);
}
//插入dom
$('.li_imgs').children('.imgs').last().before(html);
setTimeout(function(){
$.hidePreloader();
_deny_request = false;
},);
},
error:function(){
public_toast('服务器离家出走了,请稍后重试',);
},
});
}
修正ios h5上传图时的图片方向问题的更多相关文章
- iOS工程上传AppStore时遇到的问题“ERROR ITMS-90046”解析
在我们将代码写完整,测试没有bug之后,我们就可以将它上传到AppStore了,上传的过程只要操作正确并不会有太大的问题,但是打包的过程中会出现一些小问题,导致打的包不能上传或者上传的时候会出现错误. ...
- iOS 应用上传所需 Icon图片大小
iPhone-only Apps Include the following in your application's Resources group in the Xcode project: T ...
- 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览
在使用 AjaxFileUpload 上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...
- 利用exif.js解决ios手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- 解决ios手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题
微信多图片上传必须挨个上传,也就是不能并行,得串行: 那么我们可以定义一个如下所示的上传函数: var serverIds = []; function uploadImages(localImage ...
- Iphone H5上传照片被旋转
最近做项目发现在Iphone下,我们上传图片都会被翻转,最后查阅资料发现,的确是IOS的问题 不说过程,直接解决方法 iOS下,html方式使用<input type="file&qu ...
- iOS App上传中遇到的问题
1. 今天打包上传文件时出现“Missing iOS Distribution signing identity for XXXX” 导致问题的原因是:下边这个证书过期了 以下是苹果官方给出的回应: ...
- java接受安卓及ios App上传的图片,并保存到阿里OSS
做后台的时候,写了两个方法,分别用来获取安卓和苹果IOS端上传的头像,保存到阿里云OSS图片存储服务器上.(SMM框架) 安卓及H5版本: /** * 上传用户头像 */ @RequestMappin ...
随机推荐
- Oracle关闭session锁
select session_id from v$locked_object;//找到锁的sessionId SELECT * FROM v$session //查看该sessionId以及对应的 ...
- ZOJ 3860: - Find the Spy
3860 - Find the Spy Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu S ...
- 字符编码的过滤器Filter(即输入的汉字,能在页面上正常显示,不会出现乱码)
自定义抽象的 HttpFilter类, 实现自 Filter 接口 package com.lanqiao.javaweb; import java.io.IOException; import ja ...
- 山东理工大学第七届ACM校赛-经济节约 分类: 比赛 2015-06-26 10:34 19人阅读 评论(0) 收藏
经济节约 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 由于经济紧张,某国国王决定减少一部分多余的士兵,这些士兵在边界都有各自的 ...
- 关于List.ToArray()方法的效率测试
之前一直认为因为List内部是数组,ToArray的实现只是将数组返回出去而已. 今天测了一下发现并不是那样 var a = new List<int>(); ; i < ; i++ ...
- Unity-Animator深入系列---fullPathHash和shortNameHash
回到 Animator深入系列总目录 Unity5对状态哈希做了改进,拆分成了fullPathHash和shortNameHash,那么就来看看他们有什么区别 测试结果: fullPathHash支持 ...
- mysqli报错(HY000/2002)
Warning: mysqli::mysqli(): (HY000/2002): 没有那个文件或目录 解决:把localhost 换成127.0.0.1就好了.
- PHP redis负载均衡代码
<?php /** * This is a Redis exntend class * jay.w */ class RedisClient { public static $instance ...
- Intent官方教程(4)用Intent构造应用选择框
Forcing an app chooser When there is more than one app that responds to your implicit intent, the us ...
- Python 2.7.9 Demo - 获取调用的参数
#coding=utf-8 #!/usr/bin/python import sys; print("The command line parameters are : "); f ...