合并代码

This commit is contained in:
X1627315083
2024-08-19 10:36:46 +08:00
parent a8ab30f30c
commit e4b3ebe88b
30 changed files with 857 additions and 472 deletions

View File

@@ -1,50 +1,37 @@
import html2canvas from "html2canvas";
const getJpeg = dom =>{
return new Promise(resolve =>{
setTimeout(() => {
html2canvas(dom,{useCORS: true,}).then(canvas =>{
let base64 = canvas.toDataURL('image/jpeg',.9);
// let quality = 0.9 // 压缩系数0-1之间
let newImage = new Image()
newImage.src = base64
newImage.setAttribute('crossOrigin', 'Anonymous') // url为外域时需要
// let imgWidth,
// imgHeight
// let w = undefined
newImage.onload = function () {
// w = this.width * 1
// imgWidth = this.width
// imgHeight = this.height
// let canvas = document.createElement('canvas')
// let ctx = canvas.getContext('2d')
// if (Math.max(imgWidth, imgHeight) > w) {
// if (imgWidth > imgHeight) {
// canvas.width = w
// canvas.height = w * (imgHeight / imgWidth)
// } else {
// canvas.height = w
// canvas.width = w * (imgWidth / imgHeight)
// }
// } else {
// canvas.width = imgWidth
// canvas.height = imgHeight
// quality = 0.6
// }
// ctx.clearRect(0, 0, canvas.width, canvas.height)
// ctx.drawImage(this, 0, 0, canvas.width, canvas.height) // // 这里面的 this 指向 newImage
// let smallBase64 = canvas.toDataURL('image/jpeg', quality) // 压缩语句
let fileData = dataURLtoFile(base64);
let fileOfBlob = new File([fileData], new Date() + ".jpg"); // 命名图片名
// console.log(smallBase64);
// resolve(base64ToFile(fileOfBlob))
resolve(fileOfBlob)
newImage.remove()
}
})
}, 100);
})
return new Promise(resolve =>{
setTimeout(() => {
html2canvas(dom,{useCORS: true,}).then(canvas =>{
let base64 = canvas.toDataURL('image/jpeg',.9);
// let quality = 0.9 // 压缩系数0-1之间
let newImage = new Image()
newImage.src = base64
newImage.setAttribute('crossOrigin', 'Anonymous') // url为外域时需要
const filename = new Date().toISOString() + '.jpg';
resolve(base64ToFile(base64,filename))
newImage.remove()
// }
})
}, 100);
})
}
function base64ToFile(base64,filename) {
// 从 Base64 编码中去掉数据类型描述部分
const base64Str = base64.replace(/^data:image\/[a-z]+;base64,/, '');
// 解码 Base64 字符串
const byteCharacters = atob(base64Str);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
// 创建 File 对象
const file = new File([byteArray], filename, { type: 'image/jpeg' }); // 根据需要的类型进行修改
console.log(file);
return file;
}
//base64转成blob
function dataURLtoFile(dataURI, type) {
@@ -58,16 +45,15 @@ function dataURLtoFile(dataURI, type) {
//转换
const base64ToFile = urlData =>{
const arr = urlData.split(',');
const mime = arr[0].match(/:(.*?);/)[1]
const bytes = atob(arr[1])
let n = bytes.length;
const ia = new Uint8Array(n)
while (n--){
ia[n] = bytes.charCodeAt(n);
}
return new File([ia],'jpeg',{type:mime})
}
// const base64ToFile = urlData =>{
// const arr = urlData.split(',');
// const mime = arr[0].match(/:(.*?);/)[1]
// const bytes = atob(arr[1])
// let n = bytes.length;
// const ia = new Uint8Array(n)
// while (n--){
// ia[n] = bytes.charCodeAt(n);
// }
// return new File([ia],'jpeg',{type:mime})
// }
export default getJpeg