@slan-health/taro-vueuse
Version:
taro vue版本hooks
56 lines (55 loc) • 1.56 kB
JavaScript
import Compressor from "../node_modules/.pnpm/compressorjs-global@1.1.2/node_modules/compressorjs-global/dist/compressor.esm.js";
const downloadImage = async (filePath) => {
const responese = await fetch(filePath);
const blob = await responese.blob();
return blob;
};
const generateBlobUrl = (blob) => {
const blobInstance = new Blob([blob], {
type: "application/octet-stream"
});
const href = window.URL.createObjectURL(blobInstance);
return href;
};
const saveImageForH5 = async (filePath) => {
if (filePath) {
let result = true;
try {
const blob = await downloadImage(filePath);
const href = generateBlobUrl(blob);
const downloadElement = document.createElement("a");
downloadElement.href = href;
downloadElement.download = filePath.split("/").reverse()[0];
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement);
window.URL.revokeObjectURL(href);
} catch (e) {
result = false;
}
return result;
}
return false;
};
const compressForH5 = (blob, quality) => {
return new Promise((resolve, reject) => {
new Compressor(blob, {
quality: (quality || 80) / 100,
success: (res) => {
const tempFilePath = generateBlobUrl(res);
resolve({
tempFilePath,
errMsg: "compressImage:ok"
});
},
error: reject
});
});
};
export {
compressForH5,
downloadImage,
generateBlobUrl,
saveImageForH5
};
//# sourceMappingURL=utils.js.map