uniapp 小程序压缩图片
小程序压缩图片和普通 html 压缩图片思路一致。
步骤为:
- 获取图片信息
- 获取canvas 节点
- 创建图片对象
- 压缩图片
详细代码
/**
* 获取图片信息
* @param {string} imgObj 图片对象path
* @param {function} fn 回调函数
* @returns {ojbect} cbParams
* {
* height: 722,
* width: 1366,
* type: 'png',
* path: '',
* orientation: 'up',
* errMsg: ''
* }
*/
function getImageObject (src, fn) {
uni.getImageInfo({
src: src,
success (res) {
fn(res)
}
})
}
/**
* 压缩图片
* @param {object} img 图片
* @param {function} fn 回调函数
*/
function compressImg (img, fn) {
const selectorQuery = uni.createSelectorQuery()
selectorQuery.select('#canvas')
.fields({node: true, size: true})
.exec(res => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
canvas.height = img.height
canvas.width = img.width
let seal = canvas.createImage();
seal.src = img.path;
seal.onload = () => {
ctx.drawImage(seal, 0, 0, img.width, img.height)
const url = canvas.toDataURL('image/jpeg', .1)
fn(url)
}
})
}
使用方法
getImageObject(list[0].file.path, img => {
compressImg(img, res => {
console.log(res);
})
})
新发现
base64字符的长度就是文件尺寸
原文地址:https://blog.csdn.net/lune_windy/article/details/113398882
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。