wx.getLocalImgData 压缩 JS完整代码
时间: 2024-10-05 16:01:58 浏览: 23
`wx.getLocalImgData` 是微信小程序提供的一个 API,用于获取本地图片的数据。如果你想要压缩图片并在获取到数据后处理,可以参考以下 JavaScript 代码示例:
```javascript
// 原始获取图片数据的函数
async function getLocalImage(imgPath) {
try {
const localData = await wx.getLocalImgData({
src: imgPath,
});
return localData.buffer; // 返回的是原始图片字节流
} catch (err) {
console.error('Failed to get local image data:', err);
return null;
}
}
// 压缩图片并返回压缩后的数据
function compressImage(data) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// 将字节流转为img元素
const imgElement = document.createElement('img');
imgElement.src = URL.createObjectURL(new Blob([data], { type: 'image/jpeg' }));
// 等待图片加载完成
imgElement.onload = () => {
canvas.width = imgElement.width;
canvas.height = imgElement.height;
ctx.drawImage(imgElement, 0, 0);
// 使用canvas的toDataURL进行压缩
let compressedDataUrl = canvas.toDataURL('image/jpeg', 0.8); // 压缩质量设置为0.8,范围0-1
let compressedData = atob(compressedDataUrl.substring(compressedDataUrl.indexOf(',') + 1));
return new Uint8Array(compressedData);
};
// 如果图片未加载失败,则开始绘制
if (!imgElement.error) {
imgElement.onload();
}
}
// 调用获取本地图片和压缩的组合
const imgPath = "your-image-path"; // 替换为实际的图片路径
getLocalImage(imgPath)
.then(compressImage)
.then((compressedData) => {
// 这里可以进一步处理压缩后的数据,比如上传服务器
console.log('Compressed image data:', compressedData);
})
.catch((error) => {
console.error('Error occurred during compression:', error);
});
```
阅读全文