perf: binary avatar

This commit is contained in:
archer
2023-06-14 22:26:11 +08:00
parent 7c159d8aba
commit 7c52cec0ea
16 changed files with 98 additions and 14 deletions

View File

@@ -3,6 +3,7 @@ import Papa from 'papaparse';
import { getOpenAiEncMap } from './plugin/openai';
import { getErrText } from './tools';
import { OpenAiChatEnum } from '@/constants/model';
import { uploadImg } from '@/api/system';
/**
* 读取 txt 文件内容
@@ -218,11 +219,11 @@ export const compressImg = ({
new Promise<string>((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
reader.onload = async () => {
const img = new Image();
// @ts-ignore
img.src = reader.result;
img.onload = () => {
img.onload = async () => {
let width = img.width;
let height = img.height;
@@ -248,14 +249,24 @@ export const compressImg = ({
}
ctx.drawImage(img, 0, 0, width, height);
const compressedDataUrl = canvas.toDataURL(file.type, 1);
const compressedDataUrl = canvas.toDataURL(file.type, 0.8);
// 移除 canvas 元素
canvas.remove();
if (compressedDataUrl.length > maxSize) {
return reject('图片太大了');
}
resolve(compressedDataUrl);
const src = await (async () => {
try {
const src = await uploadImg(compressedDataUrl);
return src;
} catch (error) {
return compressedDataUrl;
}
})();
resolve(src);
};
};
reader.onerror = (err) => {