上传图片如果过大,等待时间过长体验不好,于是使用js压缩图片再上传,无关图片清晰度。

/**

* 压缩图片

* @param file 图片文件

* @param callback 回调函数,压缩完要做的事,例如ajax请求等。

*/

compressFile(file,callback){

let fileObj = file;

let reader = new FileReader()

reader.readAsDataURL(fileObj) //转base64

reader.onload = function(e) {

let image = new Image() //新建一个img标签(还没嵌入DOM节点)

image.src = e.target.result

image.onload = function () {

let canvas = document.createElement('canvas'), // 新建canvas

context = canvas.getContext('2d'),

imageWidth = image.width / 4, //压缩后图片高度和宽度

imageHeight = image.height / 5,

data ='';

canvas.width = imageWidth

canvas.height = imageHeight

context.drawImage(image, 0, 0, imageWidth, imageHeight)

data = canvas.toDataURL('image/jpeg',0.1) // 0.1压缩至以前的0.1倍

let arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1], // 转成blob

bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);

while (n--) {

u8arr[n] = bstr.charCodeAt(n);

}

let files = new window.File([new Blob([u8arr], {type: mime})], 'test.jpeg', {type: 'image/jpeg'}) // 转成file

callback(files) // 回调

}

}

},

图片压缩完毕后就会毁掉callback函数

上传拿到文件进行判断大小是否需要压缩。需要压缩就使用压缩方法,通过回调函数进行操作。

这里需要特别注意,因为我使用的是iview,一直习惯了this方法调用函数,如果在这里函数调用函数的话,此this非彼this,所以就需要使用$this来进行接收外面的this,从而调用外面的uploads函数方法。

依赖阿里云的

封装密钥

进行图片上传

参数分别是文件名字,和文件

后面发现拍照文件如果原图是旋转的话,传上去的话也会是旋转的图片,这里就需要再将它转回来。

下载依赖exif.js

//获取图片属性

getPhotoOrientation(img,callback){

var orient;

EXIF.getData(img, function () {

orient = EXIF.getTag(img, 'Orientation');

callback(orient);

});

// callback(orient);

// this.orient=orient;

},

通过此方法可以获取图片的属性,根据orient值来得到是旋转多少

然后在画板图片绘制的时候进行判断,是否有旋转,如果有旋转再将他转正

js 导出pdf上传至oss_前端上传图片到oss,压缩图片后上传至oss(补充图片文件旋转90度问题)...相关推荐

  1. JS导出PDF插件(支持中文、图片使用路径)

    JS导出PDF插件(支持中文.图片使用路径) 原文:JS导出PDF插件(支持中文.图片使用路径) 在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfma ...

  2. 利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

    html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

  3. exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4之前的版本 )

    exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4 ) 问题描述: 在做手机移动端app时,发现iOS12.5.1版本(iphone6)上传照片出现顺时针旋转90问题,ip ...

  4. ios 拍照上传到服务器_ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案...

    1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...

  5. 解决uniapp在h5图片上传后旋转90度问题(editor同样适用)

    问题简单描述 以往没有uniapp上传图片的经验,这两天刚接手这个功能,遇到了一系列糟心的事情 1.第一版我使用的插件市场的图片压缩插件,出现的问题:低版本安卓拍照出现闪退白屏等问题 2.第二版我换了 ...

  6. 通过PHAsset获取的图片上传后变大和图像被旋转90度问题完美解决方案

    通过新建立相同的localIdentifier的PHAsset来实现获取到的图片和原图片大小相同,方向正常. 通过TZImagePickerController获取到选择图片的assets和photo ...

  7. 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)...

    背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...

  8. js的Canvas逆时针旋转90度

    一.前言: 移动端签字的时候,屏幕是横屏的状态.当签完字的时候,需要将图片逆时针旋转90度,然后把图片上传至服务器 二.思路: (1)获取到图片的宽度.长度 (2)设置新的 Canvas 的宽度.长度 ...

  9. 如何将PDF图片旋转90度,盘点这个小方法

    很多时候我们在网上下载的PDF文件中有很多图片都是倒着的,这就需要将图片旋转过来使用,那么如何将PDF文件中图片旋转90度?今天就来为大家盘点这个小方法,一起来看看吧. 1.我们大家肯定都使用PDF图 ...

最新文章

  1. 在Python中查找和替换文本,玩转Python正则
  2. linux开机流程、模块管理与Loader(续)
  3. python 格式话-占位符
  4. mysql安装尝试创建新用户失败_Linux MySQL yum安装 创建新用户
  5. Scala教程之:PartialFunction
  6. 判断三点是顺时针还是逆时针方向
  7. Django REST framework 认证、权限和频率组件
  8. 各种数据库默认端口汇集
  9. 【功能测试】-【黑盒测试用例】
  10. cmd 文本文件分割_通过split命令分割大文件
  11. Machine Learning 资讯 : 经济学家谈人工智能
  12. NYOJ 吃土豆(动态规划)
  13. ie打开本地html页面慢,ie11 第一次浏览jquery+CSS3网页时候延时3秒
  14. 一次装系统惨痛的翻车经历
  15. 微信表情过滤 EmojiFilterUtil
  16. 《把时间当作朋友》读后感
  17. C#-根据手机号获得相应的信息
  18. 并联电容器总结与理解
  19. AttributeError: type object ‘Image‘ has no attribute ‘fromarray‘
  20. 江南百景图凭什么火?

热门文章

  1. 把样本扩增与多类标融合在一起的caffe 代码
  2. MYSQL集群的备份与恢复最终版本
  3. 局域网如何通过SSH 2连接上VMware 10虚拟机新装的centOS系统远程登录
  4. 从电子电路到嵌入式系统(开篇)
  5. 搜索引擎的那些事(网页下载)
  6. 一步一步写算法(之线性堆栈)
  7. 51单片机入门教程(6)——外部中断
  8. strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
  9. springboot获取项目路径_springboot学习
  10. php smarty2 框架,PHP CodeIngiter 2.x.x 框架与 Smarty 3.x.x 模板引擎整合