Vue3使用html2canvas實(shí)現(xiàn)將指定div下載為圖片
更新時(shí)間:2025年11月17日 09:40:30 作者:朝陽39
這篇文章主要為大家詳細(xì)介紹了Vue3如何使用html2canvas實(shí)現(xiàn)將指定div下載為圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
效果預(yù)覽



安裝依賴
cnpm i html2canvas
導(dǎo)入依賴
import html2canvas from "html2canvas";
函數(shù)封裝
/**
* 將指定div下載為圖片
* @param targetDiv 目標(biāo)div的Dom
* @param fileName 下載的文件名(無需后綴)
* @param format 圖片格式:'png' 或 'jpg'
* @param quality 圖片質(zhì)量(僅對jpg有效,0-1之間)
*/
async function downloadDivAsImage(
targetDiv: HTMLDivElement,
fileName: string = "流程圖",
format: "png" | "jpg" = "png",
quality: number = 1
) {
// 1. 檢查目標(biāo)div是否存在
if (!targetDiv) {
return;
}
try {
// 2. 使用html2canvas將div轉(zhuǎn)為canvas
const canvas = await html2canvas(targetDiv, {
useCORS: true, // 允許跨域圖片(如果div內(nèi)有外部圖片)
logging: false, // 關(guān)閉日志
scale: window.devicePixelRatio, // 按設(shè)備像素比縮放,避免模糊
backgroundColor: null, // 背景透明(如需白色背景可設(shè)為'#ffffff')
});
// 3. 將canvas轉(zhuǎn)為圖片URL
const imageUrl = canvas.toDataURL(`image/${format}`, quality);
// 4. 觸發(fā)下載
const link = document.createElement("a");
link.href = imageUrl;
link.download = `${fileName}.${format}`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(imageUrl); // 釋放資源
} catch (error) {
console.error("下載失?。?, error);
}
}
頁面使用
<Icon
icon="tabler:download"
@click="downloadDivAsImage(svgBoxRef!)"
title="下載"
/>
<!-- 用于渲染流程圖的容器 -->
<div ref="svgBoxRef" v-show="svg" class="svgBox" v-html="svg"></div>
const svgBoxRef = ref<HTMLDivElement | null>(null);
到此這篇關(guān)于Vue3使用html2canvas實(shí)現(xiàn)將指定div下載為圖片的文章就介紹到這了,更多相關(guān)Vue3 html2canvas指定div下載為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3快速實(shí)現(xiàn)主題切換功能的步驟詳解
本文介紹一種基于css變量的主題切換實(shí)現(xiàn)方式,這種是最簡單,最直接,最容易理解的方式,實(shí)現(xiàn)的原理就是定義不同的HTML根標(biāo)簽元素的樣式,通過data屬性來區(qū)分不同主題css變量樣式,感興趣的朋友可以參考下2024-06-06
vue修改打包配置如何實(shí)現(xiàn)代碼打包后的自定義命名
這篇文章主要介紹了vue修改打包配置如何實(shí)現(xiàn)代碼打包后的自定義命名,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
詳解如何創(chuàng)建基于vite的vue項(xiàng)目
vite 這個(gè)是尤大開發(fā)的新工具,目的是以后替代webpack,下面這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建基于vite的vue項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
vue3組件化開發(fā)常用API知識點(diǎn)總結(jié)
Vue是目前Web前端最流行的開發(fā)框架技術(shù),?下面這篇文章主要給大家介紹了關(guān)于vue3組件化開發(fā)常用API的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法
這篇文章主要介紹了Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05

