Files
DP/AdminPanel/plugins/utils/drag/dragFileToImage.js
zuowei1216 1b19ff1b92 20251222
2025-12-22 21:06:29 +08:00

68 lines
2.1 KiB
JavaScript

/**
* 拖拽文件时,创建一个临时的预览图
*/
import { nodeFs, getOsPrefix } from "@/utils/nodeFs"
import g_config from "@/api/config/index";
/**
* 通过canvas将svg转成png
* @param {*} path 路径
* @returns 返回base64字符串
*/
export function dragFile2png(path, number) {
// debugger
let outPath = g_config.path.dragPreview;
console.log(path, outPath);
return new Promise((resolve, reject) => {
var img = new Image();
img.src = getOsPrefix() + path;
img.onload = () => {
var canvas = document.createElement('canvas');
var c = canvas.getContext('2d');
let width, height;
let scale = img.width / 100;
if (img.width > img.height) {
width = 100;
height = img.height / scale;
} else {
scale = img.height / 100;
height = 100;
width = img.width / scale;
}
canvas.width = width + 20;
canvas.height = height + 10;
//canvas画图片
c.drawImage(img, 10, 10, width, height);
c.strokeStyle = "#2961d9";
c.lineWidth = 2;
c.strokeRect(10, 10, width, height);
if (number > 1) {
c.beginPath();
c.arc(width + 10, 10, 10, 0, Math.PI * 2, true);
c.closePath();
c.fillStyle = "rgba(255,0,0,1)";
c.fill();
c.fillStyle = "#fff";//文字的颜色
c.textAlign = 'center';//对齐方式
// c.font = '13px "微软雅黑"';
c.fillText(number, width + 10, 13);
}
//将图片添加到body中
// console.log('转png', canvas.toDataURL('image/png'));
let base64 = canvas.toDataURL('image/png')
let temp = nodeFs.sync.writeBase64(outPath, base64.split('base64,')[1]);
temp.err == 1 ? reject(temp.msg) : resolve({ outPath });
}
img.onerror = (err) => {
reject(err);//转换失败
}
})
}