vue项目中利用html-to-image插件将div盒子转化为base64图片,和鼠标滚轮控制图片缩放!!!

本文介绍了如何在Vue项目中使用html-to-image插件将包含文本和图片的div转换为PNG图片,并演示了如何处理图片的base64格式和添加鼠标滚轮缩放功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        html-to-image 插件是一个能够将div盒子包括里面内容转化成png图片的插件,我个人在项目中遇到使用它的情况是在读取身份证信息之后,将获取到的数据,填入到自己写好的div盒子内,然后转化成图片放入到展示区域内.

        这里只写一个简单的盒子,内部一段文字和一张图片(vue项目中)

首先npm install html-to-image

<template>
  <div id="app">
  
    <div id="img">今天是个好日子

      <img src="./assets/logo.png" alt="">
    </div>
    <img :src="imgUrl" alt="" ref="image" width="auto" height="auto"/>


  </div>
</template>
import { toPng } from 'html-to-image'
export default {
 
  name: 'App',
  data() {
    return {
      imgUrl: '',
      
    }
  },
  methods: {
    getImage() {
      const node = document.querySelector('#img')
      console.log(node)
      toPng(node).then((dataUrl) => {
        // 使用图片数据URL
        console.log(dataUrl);
        this.imgUrl = dataUrl
        //  console.log(this.imgUrl)
      })
        .catch(function (error) {
          console.error('转换错误:', error);
        });
    },
  },
  mounted() {
    this.getImage()
   
  },
 
}

 出来的效果是这样的

         转化的图片是base64格式,把这个赋值给图片的src就可以了,根据需求,设置img标签位置和大小,我这里为了配合图片的大小就设置了auto,小伙伴们可以可以自己试试,

        注意点:toPng函数.then和.catch内部的回调函数,尽量都用箭头函数,因为大部分情况下我们会访问data内的变量,如果用function函数不访问data内变量时没有问题,访问的话因为this指向的问题,会导致我们没有办法访问到!!!

        拓展点:给生成的图片添加鼠标滚轮缩放功能!

        首先要确定的是图片的缩放是控制style中transform属性,通过给scale赋值来实现我们想要的缩放功能.

在methods中添加处理方法
methods:{
    handleWheel(event) {
      // console.log(event)
      event.preventDefault();
 // event.preventDefault()是一个用于阻止事件的默认行为的方法。在这种情况下,我们使用event.preventDefault()来阻止鼠标滚轮事件的默认行为,以避免页面滚动。
      const imgElement = this.$refs.image;
     
      // 通过鼠标滚轮的deltaY值来判断滚动方向
      const deltaY = event.deltaY > 0 ? -1 : 1;

      // 根据滚动方向来改变缩放级别
      this.scale += deltaY * 0.1;

      // 设置新的缩放级别
      imgElement.style.transform = `scale(${this.scale})`;
    }
}

在data中定义scale
 data() {
    return {
      imgUrl: '',
    
      scale: 1 ,
    }
  },
在img标签内添加wheel事件处理就好了
 <img :src="imgUrl" alt="" ref="image" width="auto" height="auto" @wheel="handleWheel"/>

然后运行就可以实现缩放功能了,小伙伴们可以试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值