canvas语言适配
This commit is contained in:
@@ -69,6 +69,7 @@ export default defineComponent({
|
||||
dataDom.editCanvas.addImageToLayer(url,{layerId:dataDom.editCanvas.layers[0].id,imageMode:'contains',undoable:false})
|
||||
}
|
||||
const canvasInit = (value)=>{
|
||||
if(!props.imgUrl)return
|
||||
canvasLoadAddImg(props.imgUrl,value.layers.value[0].id)
|
||||
}
|
||||
const getCanvasData = ()=>{
|
||||
@@ -89,10 +90,40 @@ export default defineComponent({
|
||||
|
||||
}
|
||||
const exportElement = ()=>{
|
||||
canvasEditor.value.exportImage({isContainBg:true,isContainFixed:false,isCropByBg:true}).then((rv)=>{
|
||||
dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:false,isCropByBg:true}).then((rv)=>{
|
||||
downloadBase64Image(rv,'canvas')
|
||||
})
|
||||
}
|
||||
function downloadBase64Image(base64Data, filename) {
|
||||
// 1. 提取MIME类型(自动处理各种Base64前缀)
|
||||
const mimeMatch = base64Data.match(/^data:(.+?);base64,/);
|
||||
if (!mimeMatch) {
|
||||
console.error('Invalid Base64 data');
|
||||
return;
|
||||
}
|
||||
// 2. 获取扩展名
|
||||
const mimeType = mimeMatch[1];
|
||||
const extension = mimeType.split('/')[1] || 'png';
|
||||
|
||||
// 3. 转换Base64为Blob
|
||||
const byteString = atob(base64Data.split(',')[1]);
|
||||
const ab = new ArrayBuffer(byteString.length);
|
||||
const ia = new Uint8Array(ab);
|
||||
for (let i = 0; i < byteString.length; i++) {
|
||||
ia[i] = byteString.charCodeAt(i);
|
||||
}
|
||||
const blob = new Blob([ab], { type: mimeType });
|
||||
const url = URL.createObjectURL(blob);
|
||||
const a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.download = `${filename}.${extension}`;
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
setTimeout(() => {
|
||||
document.body.removeChild(a);
|
||||
URL.revokeObjectURL(url);
|
||||
}, 100);
|
||||
}
|
||||
const changeCanvas = ()=>{
|
||||
emit('canvasChangeGetJSON',{canvasJSON:dataDom.editCanvas.getJSON(),submitDate:5000})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user