概述
uniapp上传图片的时候前台压缩
下边是一个完整的页面代码:
测试下拉发现,图片内存小的话,压缩出来内存反而变大了,但是文件较大的情况下,压缩后就很小了。所以可以考虑通过判断源文件的大小来考虑是否压缩。此处全部压缩,已满足应用场景。写的比较乱,留给自己看。
<template>
<view class="content">
<view @tap="ChooseImage()">点击上传图片</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
ChooseImage() {
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: res => {
const imgSize = res.tempFiles[0] && res.tempFiles[0].size ? res.tempFiles[0].size : 0;
const imgName = res.tempFiles[0]&&res.tempFiles[0].name?res.tempFiles[0].name:'';
console.log(imgSize)
this.photoCompress(res.tempFiles[0], (base64Codes) => {
var fl = this.dataURLtoFile(base64Codes,imgName)
console.log(fl, "压缩后的文件")
})
}
})
},
photoCompress(file, objDiv) {
var ready = new FileReader();
ready.readAsDataURL(file);
const _this = this;
ready.onload = function() {
var fileResult = this.result;
_this.canvasDataURL(fileResult, objDiv)
}
},
canvasDataURL(path, callback) {
var img = new Image();
img.src = path;
var objCompressed = {}
img.onload = function() {
var that = this;
//默认压缩后图片规格
var quality = 0.7;
var w = that.width;
var h = that.height;
var scale = w / h;
//实际要求
w = objCompressed.width || w;
h = objCompressed.height || (w / scale);
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
var base64 = canvas.toDataURL('image/jpeg', quality);
// 回调函数返回base64的值
callback(base64);
}
},
dataURLtoFile(dataurl,filename) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr],filename, { type: mime });
}
}
}
</script>
<style>
</style>
原文路径:
https://www.cnblogs.com/Fourteen-Y/p/11646540.html
最后
以上就是忧伤便当为你收集整理的Uniapp上传图片的压缩问题的全部内容,希望文章能够帮你解决Uniapp上传图片的压缩问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复