border-radius在ios的兼容:-webkit-appearance:none;  加上这个属性,可以保证安卓和ios的圆角一致


上传图片,这段没有代码没有管图片拍摄的方位,

var _this = this;
var target = e.target;
var FileReadered = new FileReader();
var image = new Image();
let img1 = e.target.files[0];
console.log(img1,'img111')
var reg = new RegExp(/jpg|jpeg|png|gif/);
//验证是否是一张图片
if(!reg.test(img1.type.substr((img1.type.lastIndexOf('/')+1)))){
return;
}

//读取图片数据
FileReadered.readAsDataURL(img1);
//读取后做的操作
FileReadered.onload = function(e){
image.src = e.target.result;
image.onload = function(){
let imgWidth = image.width;
let imgHeight = image.height;
let quality = 0.3;
let canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d");
//压缩开始
if(imgWidth >= imgHeight && imgWidth > 750){
imgWidth = 750;
imgHeight = Math.ceil(750 * this.height / this.width);
}else if(imgWidth < imgHeight && imgHeight > 1334){
imgWidth = Math.ceil(1334 * this.width / this.height);
imgHeight = 1334;
}
canvas.width = imgWidth;
canvas.height = imgHeight;
//画画开始
ctx.drawImage(image, 0, 0, imgWidth, imgHeight);
//把canvas的图片转为url
let cdata = canvas.toDataURL("image/jpeg",quality);
img1= _this.dataURLtoFile(cdata,img1.name);
console.log(img1,'img111')
//上传开始
target.value = '';
if (!img1.size) {return}
if ( img1.size > 4194304) {
//图片大于4M
this.$vux.toast.text('上传头像小于4M');
return;
}
let form = new FormData();
form.append('file',img1);
let config = {
headers:{'Content-Type':'multipart/form-data'}
};
_this.$http.post('/file/upload?token='+localStorage.getItem('token'),form,config).then(res=>{
let arr = 'userfiles'+res.data.split('userfiles')[1];
console.log(arr,'arr')
_this.customer.customerPortrait = arr;
_this.$http.post('/customer/update',_this.customer).then(ress=>{
if (ress.data.code===0) {
_this.imgAddress = res.data;
console.log(_this.imgAddress,'this.imgAddress')
}
})
})
}
};

import EXIF from 'exif-js' 这个文件是用来做手机拍摄方位的;

EXIF.getData(file, function () {
  Orientation = EXIF.getTag(this, 'Orientation');   //用变量来接收拍摄方位
});

if (Orientation && Orientation != 1) {
switch (Orientation) {
case 6:
canvas.width = imgHeight;
canvas.height = imgWidth;
ctx.rotate(Math.PI / 2);
ctx.drawImage(image, 0, -imgHeight, imgWidth, imgHeight);
break;
case 3:
ctx.rotate(Math.PI);
ctx.drawImage(image, -imgWidth, -imgHeight, imgWidth, imgHeight);
break;
case 8:
canvas.width = imgHeight;
canvas.height = imgWidth;
ctx.rotate(3 * Math.PI / 2);
ctx.drawImage(image, -imgWidth, 0, imgWidth, imgHeight);
break;
}
} else {
ctx.drawImage(image, 0, 0, imgWidth, imgHeight);
}

最后这段判断是判断图片方位,暂时没有仔细去看;

ios兼容的更多相关文章

  1. h5微信浏览器复制粘贴--ios兼容问题的解决方法(clipboard.js插件)

    前段时间在做微信h5的时候,遇到了ios兼容,使用clipboard.js插件完美解决 下载地址:下载地址: https://github.com/zenorocha/clipboard.js cnd ...

  2. 小程序 ----踩坑 ---安卓iOS兼容等

    关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...

  3. Clipboard 自动复制功能,ios复制失败,换方案 user-select: text ;长按复制 (ios 兼容,长按复制)

    Clipboard 自动复制功能,嵌套app内跳转的页面,ios 自动复制失败(该ios机子,微信,浏览器打开复制没有问题) 暂时换方案    user-select: text ;长按复制 (ios ...

  4. ios 兼容IPV4和IPV6网络通信

    前言: 苹果官方出了新的规定,要求新上架的app都必须单独支持ipv6-only的网络. 准备工作: 搭建IPV6测试环境:http://blog.csdn.net/potato512/article ...

  5. 移动端网页 -- 安卓与IOS兼容

    1.在a链接长按时,ios系统会识别并复制a链接中的href值,而安卓不会,只会选择复制文字 关于长按复制其他区域内容:pc端可以实现,在移动端目前还没有找到解决方案,很多都是基于flash的 2.i ...

  6. 安卓和IOS兼容问题

    点击穿透 click延迟 scroll元素临界的bug android screen.w/h 不准 rem不准 scroll时动画失效 animate回调 最小字号限制 不同机型全屏自适应 andro ...

  7. ios兼容 iphoneX ios10 ios11

    假设你有一个固定位置的标题栏,你的iOS10的CSS可能是这样写的: header { position: fixed; top:; left:; right:; height: 44px; padd ...

  8. 记H5单页遇到的几个ios兼容问题

    最近写一个H5活动页,安卓里的表现很不错,写下来很少出现兼容性问题,ios就不一样了,好多问题都出现在ios上(手动狗头)

  9. 混合开发中ios兼容问题

    1. z-index无效,设置层级,发现再ios中无效,后来发现是设置了 -webkit-overflow-scrolling:touch 设置这个属性之后.层级设置失效 2.@keyup事件的问题, ...

随机推荐

  1. IIS发布问题解决

    一. HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure ://安装AspNetCoreModule托管模块后执行1. net stop wa ...

  2. vue+axios通过formdata提交参数和上传文件

    demo.vue 文件 <template> <div class="demo"> <input v-model="importForm.m ...

  3. webstorm最新激活码2019----亲测可用

    亲测日期:2019.12.10 网址里面有 lookdiv.com 里面的钥匙就是lookdiv.com

  4. EntityFramework进阶(三)- 根据IQueryable获取DbContext

    本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处 有时候我们要通过IQueryable获取所在的DbContext信息,这是完全可以的. 以下代码从个人开源框架中 ...

  5. 学习到目前,自己封装的db类和pdo类

    DB封装类 <?php class DBDA { public $host = "localhost"; public $uid = "root"; pu ...

  6. S5PV210 启动流程

    S3C6410启动流程 首先,看一下S3C6410启动流程 ① iROM supports initial boot up : initialize system clock, D-TCM, devi ...

  7. stm32 CAN通信 TJA1040

    CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...

  8. hive分区理念介绍

    一.背景 1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念. 2.分区表指的是在创建表 ...

  9. 每日一题-——最长公共子序列(LCS)与最长公共子串

    最长公共子序列(LCS) 思路: 代码: def LCS(string1,string2): len1 = len(string1) len2 = len(string2) res = [[0 for ...

  10. kubernetes---ConfigMap管理应用配置

    1.拆分环境 主机名 角色 ip hdss7-11.host.com zk1.od.com(Test环境) 10.4.7.11 hdss7-12.host.com zk2.od.com(Prod环境) ...