Feat:支持导出jpg格式

This commit is contained in:
wanglin2 2025-04-06 20:19:01 +08:00
parent 6d729c53ab
commit 7d4acd15d0

View File

@ -128,7 +128,13 @@ class Export {
} }
// svg转png // svg转png
svgToPng(svgSrc, transparent, clipData = null, fitBg = false) { svgToPng(
svgSrc,
transparent,
clipData = null,
fitBg = false,
format = 'image/png'
) {
const { maxCanvasSize, minExportImgCanvasScale } = this.mindMap.opt const { maxCanvasSize, minExportImgCanvasScale } = this.mindMap.opt
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const img = new Image() const img = new Image()
@ -233,7 +239,7 @@ class Export {
} else { } else {
ctx.drawImage(img, fitBgLeft, fitBgTop, imgWidth, imgHeight) ctx.drawImage(img, fitBgLeft, fitBgTop, imgWidth, imgHeight)
} }
resolve(canvas.toDataURL()) resolve(canvas.toDataURL(format))
} catch (error) { } catch (error) {
reject(error) reject(error)
} }
@ -311,17 +317,35 @@ class Export {
}) })
} }
// 导出为指定格式的图片
async _image(format, name, transparent = false, node = null, fitBg = false) {
this.mindMap.renderer.textEdit.hideEditTextBox()
this.handleNodeExport(node)
const { str, clipData } = await this.getSvgData(node)
const svgUrl = await this.fixSvgStrAndToBlob(str)
const res = await this.svgToPng(
svgUrl,
transparent,
clipData,
fitBg,
format
)
return res
}
// 导出为png // 导出为png
/** /**
* 方法1.把svg的图片都转化成data:url格式再转换 * 方法1.把svg的图片都转化成data:url格式再转换
* 方法2.把svg的图片提取出来再挨个绘制到canvas里最后一起转换 * 方法2.把svg的图片提取出来再挨个绘制到canvas里最后一起转换
*/ */
async png(name, transparent = false, node = null, fitBg = false) { async png(...args) {
this.mindMap.renderer.textEdit.hideEditTextBox() const res = await this._image('image/png', ...args)
this.handleNodeExport(node) return res
const { str, clipData } = await this.getSvgData(node) }
const svgUrl = await this.fixSvgStrAndToBlob(str)
const res = await this.svgToPng(svgUrl, transparent, clipData, fitBg) // 导出为jpg
async jpg(...args) {
const res = await this._image('image/jpg', ...args)
return res return res
} }