压缩图片
- 用fileReader.readAsDataURL读取file文件,得到的结果为base64位imgUrl
- 用canvas.drawImage,重绘图片
- canvasurl 转file后,上传
const dataURLtoFile = (dataurl, filename) => {
const arr = dataurl.split(",");
const bstr = window.atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {
type: "image/jpeg",
});
};
const compressImg = (file, uploadImage) => {
var fileReader = new FileReader();
if (file == undefined) return;
fileReader.readAsDataURL(file);
fileReader.onload = function () {
var imgBase64Data = this.result;
let img = new Image();
img.src = imgBase64Data;
img.onload = () => {
let width = img.width;
let height = img.height;
let canvas = document.createElement("canvas");
canvas.width = 3000;
canvas.height = parseInt(3000 / (width / height));
let context = canvas.getContext("2d");
context.drawImage(img, 0, 0, canvas.width, canvas.height);
const canvasSrc = canvas.toDataURL("image/jpeg");
const canvasSrcFile = dataURLtoFile(canvasSrc, file.name);
uploadImage(canvasSrcFile);
};
};
};
export default compressImg;
import compressImg from "./compressImg";
const uploadImg = () => {...}
const handleAddCompressImg = (file) => {
const { size } = file;
if (size < 2 * 1024 * 1024) {
uploadImage(file);
} else {
compressImg(file, uploadImage);
}
};
文字转图片
- 获取html,dom
- install html2canvas
- canvas.toDataURL 转成图片
import html2canvas from 'html2canvas';
const domHtml = document.createElement("div");
domHtml.innerHTML = "this is word"
html2canvas(domHtml).then((canvas) => {
const canvasSrc = canvas.toDataURL();
...
});