vue3 下载图片(标签内容可转图)

这种方法可以用来捕获页面上的任意元素并将其转换为图片格式进行下载,适合于生成包含特定内容的图片(如海报、证书等)。

安装插件 npm install html2canvas

复制代码
<template>
  <div>
    <div ref="contentRef" style="padding: 20px; border: 1px solid #ccc;">
      <h1>Hello Vue 3</h1>
      <p>这是一段要下载为图片的内容。</p>
      <!-- 如果包含跨域图片 -->
      <img src="https://example.com/cross-origin-image.jpg" alt="Cross Origin Image">
    </div>
    <button @click="downloadAsImage">下载为图片</button>
  </div>
</template>

<script setup>
import { ref, nextTick } from 'vue';
import html2canvas from 'html2canvas';

const contentRef = ref(null);

const downloadAsImage = async () => {
  await nextTick(); // 确保 DOM 更新完成

  const element = contentRef.value;
  if (!element) {
    console.error('元素未找到');
    return;
  }

  try {
    const canvas = await html2canvas(element, {
      useCORS: true // 启用跨域支持
    });

    const link = document.createElement('a');
    link.href = canvas.toDataURL('image/png');
    link.download = 'content.png';
    link.click();
  } catch (error) {
    console.error('截图失败:', error);
  }
};
</script>
相关推荐
longze_71 小时前
Vue中:deep()和 ::v-deep选择器的区别
前端·javascript·vue.js
太阳伞下的阿呆4 小时前
本地环境vue与springboot联调
前端·vue.js·spring boot
阳光是sunny4 小时前
走进微前端(1)手写single-spa核心原理
前端·javascript·vue.js
烛阴5 小时前
Ceil -- 从平滑到阶梯
前端·webgl
90后的晨仔6 小时前
🔍Vue 模板引用(Template Refs)全解析:当你必须操作 DOM 时
前端·vue.js
90后的晨仔6 小时前
👂 Vue 侦听器(watch)详解:监听数据的变化
前端·vue.js
90后的晨仔6 小时前
深入浅出 Vue 的 computed:不仅仅是“计算属性”那么简单!
前端·vue.js
Nan_Shu_6146 小时前
学习:入门uniapp Vue3组合式API版本(17)
前端·vue.js·学习·uni-app
止观止7 小时前
Remix框架:高性能React全栈开发实战
前端·react.js·前端框架·remix
萌萌哒草头将军7 小时前
🚀🚀🚀 深入探索 Node.js v22.18.0 新特性;默认支持运行 ts 文件了!
前端·typescript·node.js