vue项目中使用html2canvas生成图片 vue技术交流群(864583465)

vue项目中使用html2canvas生成图片 vue技术交流群(864583465)

1、安装html2canvas插件

npm install --save html2canvas

2、页面代码

<template>
  <div id="html2canvasTest">
    <button @click="createImg">下载图片</button>
    <div id="dom-to-img-wrapper">
      <h1>125464531213123</h1>
      <h2>fgdgdfg</h2>
      <h3>f45rtrftf45f4g</h3>
    </div>
  </div>
</template>

<script>
import html2canvas from 'html2canvas'
export default {
  data() {
    return {}
  },
  created() {

  },
  methods: {
    createImg() {
      let domName = 'dom-to-img-wrapper'
      let imageDom = document.getElementById(domName)
      html2canvas(imageDom, {
        width: document.getElementById(domName).offsetWidth,  // canvas画板的宽度 一般都是要保存的那个dom的宽度
        height: document.getElementById(domName).offsetHeight,  // canvas画板的高度  同上
        scale: 1
      }).then((canvas) => {
        let base64Url = canvas.toDataURL('image/png', 1);
        this.fileDownload(base64Url)
      })
    },
    fileDownload(downloadUrl) {
      let aLink = document.createElement('a');
      aLink.style.display = 'none';
      aLink.href = downloadUrl;
      aLink.download = '图片名称.png';
      // 触发点击-然后移除
      document.body.appendChild(aLink);
      aLink.click();
      document.body.removeChild(aLink);
    }

  }
}
</script>

<style lang="scss">
    #html2canvasTest {

    }
</style>

3、说明
(1)html2canvas官方文档
(2)如果对下载的图片宽高大小无要求,则可以直接在上面的代码基础上进行更改,否则可以给要生成图片的那个dom设置一个高度和宽度,具体问题具体分析。
(3)该插件会严格按照dom的实际显示内容转化成图片,因此,建议转化成图片前可以先查看一下转化的效果再进行下一步操作
(4)该插件在h5页面可能会有一些未知问题,建议多分析分析,最终都会解决的
(5)欢迎留言,一起解决!!!

PS:欢迎加入vue技术交流群(864583465)进行更多问题的探讨,你的问题将是我们大家共同进步的关键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以给你提供一些思路和参考方法: 1. 在 Vue 页面引入 html2canvas 库,并使用的 toDataURL 方法将页面截图生成 Base64 图片数据。 2. 使用 Canvas图片上添加水印。 3. 可以添加多个水印,需要调整水印的位置和大小。 4. 最后将添加水印后的图片保存或上传到服务器。 下面是一个简单的示例代码,仅供参考: ``` <template> <div> <button @click="generateImage">生成图片</button> </div> </template> <script> import html2canvas from 'html2canvas'; export default { methods: { async generateImage() { const canvas = await html2canvas(document.querySelector('#target'), { useCORS: true, }); const ctx = canvas.getContext('2d'); const img = new Image(); img.src = canvas.toDataURL(); // 添加水印 img.onload = () => { // 添加第一个水印 ctx.font = 'bold 20px Arial'; ctx.fillStyle = 'rgba(255, 255, 255, 0.6)'; ctx.fillText('watermark1', 50, 50); // 添加第二个水印 ctx.font = 'bold 30px Arial'; ctx.fillStyle = 'rgba(255, 255, 255, 0.6)'; ctx.fillText('watermark2', 200, 200); // 将添加水印后的图片保存到本地 const link = document.createElement('a'); link.download = 'image.png'; link.href = canvas.toDataURL(); link.click(); }; }, }, }; </script> ``` 这里添加的两个水印只是示例,你可以根据需要添加更多的水印,并调整水印的位置和大小。同时,你需要注意浏览器的跨域问题,如果出现跨域问题,可以使用 `useCORS` 参数解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值