js 导出pdf上传至oss_前端上传图片到oss,压缩图片后上传至oss(补充图片文件旋转90度问题)...
上传图片如果过大,等待时间过长体验不好,于是使用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度问题)...相关推荐
- JS导出PDF插件(支持中文、图片使用路径)
JS导出PDF插件(支持中文.图片使用路径) 原文:JS导出PDF插件(支持中文.图片使用路径) 在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfma ...
- 利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...
- exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4之前的版本 )
exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4 ) 问题描述: 在做手机移动端app时,发现iOS12.5.1版本(iphone6)上传照片出现顺时针旋转90问题,ip ...
- ios 拍照上传到服务器_ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案...
1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...
- 解决uniapp在h5图片上传后旋转90度问题(editor同样适用)
问题简单描述 以往没有uniapp上传图片的经验,这两天刚接手这个功能,遇到了一系列糟心的事情 1.第一版我使用的插件市场的图片压缩插件,出现的问题:低版本安卓拍照出现闪退白屏等问题 2.第二版我换了 ...
- 通过PHAsset获取的图片上传后变大和图像被旋转90度问题完美解决方案
通过新建立相同的localIdentifier的PHAsset来实现获取到的图片和原图片大小相同,方向正常. 通过TZImagePickerController获取到选择图片的assets和photo ...
- 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)...
背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...
- js的Canvas逆时针旋转90度
一.前言: 移动端签字的时候,屏幕是横屏的状态.当签完字的时候,需要将图片逆时针旋转90度,然后把图片上传至服务器 二.思路: (1)获取到图片的宽度.长度 (2)设置新的 Canvas 的宽度.长度 ...
- 如何将PDF图片旋转90度,盘点这个小方法
很多时候我们在网上下载的PDF文件中有很多图片都是倒着的,这就需要将图片旋转过来使用,那么如何将PDF文件中图片旋转90度?今天就来为大家盘点这个小方法,一起来看看吧. 1.我们大家肯定都使用PDF图 ...
最新文章
- 在Python中查找和替换文本,玩转Python正则
- linux开机流程、模块管理与Loader(续)
- python 格式话-占位符
- mysql安装尝试创建新用户失败_Linux MySQL yum安装 创建新用户
- Scala教程之:PartialFunction
- 判断三点是顺时针还是逆时针方向
- Django REST framework 认证、权限和频率组件
- 各种数据库默认端口汇集
- 【功能测试】-【黑盒测试用例】
- cmd 文本文件分割_通过split命令分割大文件
- Machine Learning 资讯 : 经济学家谈人工智能
- NYOJ 吃土豆(动态规划)
- ie打开本地html页面慢,ie11 第一次浏览jquery+CSS3网页时候延时3秒
- 一次装系统惨痛的翻车经历
- 微信表情过滤 EmojiFilterUtil
- 《把时间当作朋友》读后感
- C#-根据手机号获得相应的信息
- 并联电容器总结与理解
- AttributeError: type object ‘Image‘ has no attribute ‘fromarray‘
- 江南百景图凭什么火?
热门文章
- 把样本扩增与多类标融合在一起的caffe 代码
- MYSQL集群的备份与恢复最终版本
- 局域网如何通过SSH 2连接上VMware 10虚拟机新装的centOS系统远程登录
- 从电子电路到嵌入式系统(开篇)
- 搜索引擎的那些事(网页下载)
- 一步一步写算法(之线性堆栈)
- 51单片机入门教程(6)——外部中断
- strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
- springboot获取项目路径_springboot学习
- php smarty2 框架,PHP CodeIngiter 2.x.x 框架与 Smarty 3.x.x 模板引擎整合