vue3实现页面截图功能示例详解

 更新时间:2024年10月25日 09:53:02   作者:小菜又鸟  
在Vue3项目中实现页面截图的功能,可以通过使用js-web-screen-shot组件来实现,本文以toolbox.js作为案例,详细介绍了如何在Vue3框架下,利用js-web-screen-shot组件实现页面截图的具体步骤和方法,这一技术的应用,不仅可以提高用户体验,还能在需要时方便地获取页面的即时信息

项目场景:

vue3实现页面截图功能

描述

使用 js-web-screen-shot 组件

结果

解决方案:

页面:

<cut ref="cutRef" @getCut="getCutValue"></cut>
<div
  ref="textarea"
  class="input_message"
  contenteditable="true"
></div>
import { ref} from "vue";
import cut from "../../toolbox/cut/index.vue";
import { createElementImg } from "../../../utils/base/toolbox";
const cutRef = ref(null);
// 功能区--页面截图
const getCutValue = (e) => {
  createElementImg(e, textarea.value);
};

toolbox.js

//创建img
const createElementImg = (e, vnode, w = 200, h = 0) => {
  const img = document.createElement("img");
  img.src = e;
  img.alt = "图片加载失败";
  img.width = w;
  if (h) {
    img.height = h;
  }
  vnode.appendChild(img);
};
export { createElementImg };

组件

<template>
  <div></div>
</template>
<script setup>
import { ref } from "vue";
import ScreenShort from "js-web-screen-shot";
import { defineEmits } from "vue";
// 定义 emit 事件
const emit = defineEmits();
const exportimg = ref("");
// 按钮点击时间方法,构建插件对象
const btnClick = () => {
  // 更多参数 和使用可以看它包里面的README.md文件
  const screenShotHandler = new ScreenShort({
    // 是否启用webrtc,值为boolean类型,值为false则使用html2canvas来截图
    enableWebRtc: false,
    // 层级级别,这个要比页面上其他元素的z-index的值大
    level: 2001,
    completeCallback: callback, // 截图成功完成的回调
    closeCallback: closeFn, // 截图取消的回调
  });
};
const callback = (base64data) => {
  var image = new Image();
  image.src = base64data.base64;
  image.onload = () => {
    var canvas = convertImageToCanvas(image);
    var url = canvas.toDataURL("image/jpeg"); // base64编码的图片
    // 通过atob将base64进行编码
    var bytes = window.atob(url.split(",")[1]);
    // 处理异常,将ASCII码小于0的转换为大于0,进行二进制转换
    var buffer = new ArrayBuffer(bytes.length);
    // 生成一个8位数的数组
    var uint = new Uint8Array(buffer);
    for (var j = 0; j < bytes.length; j++) {
      uint[j] = bytes.charCodeAt(j); // 根据长度返回相对应的Unicode 编码
    }
    // Blob对象  // type 为图片的格式
    const blodImg = new Blob([buffer], { type: "image/jpeg" });
    exportimg.value = URL.createObjectURL(blodImg);
    emit("getCut", exportimg.value); // 触发事件并传递数据
  };
};
const convertImageToCanvas = (image) => {
  var canvas = document.createElement("canvas");
  canvas.width = image.width;
  canvas.height = image.height;
  canvas.getContext("2d").drawImage(image, 0, 0);
  return canvas;
};
const closeFn = () => {
  // 取消截图的回调
};
defineExpose({
  btnClick,
  callback,
  convertImageToCanvas,
  closeFn,
});
</script>
<style scoped></style>

到此这篇关于vue3实现页面截图功能的文章就介绍到这了,更多相关vue3 页面截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解vue-router 2.0 常用基础知识点之导航钩子

    详解vue-router 2.0 常用基础知识点之导航钩子

    本篇文章主要介绍了vue-router 2.0 常用基础知识点之导航钩子,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Vue 购物车案例练习

    Vue 购物车案例练习

    这篇文章主要给大家分享关于Vue 购物车案例的小练习,文章个悲剧购物车为标题需求利用HTML代码实现整个过程,需要的朋友可以参考一下文章的具体内容
    2021-10-10
  • 通过vue刷新左侧菜单栏操作

    通过vue刷新左侧菜单栏操作

    这篇文章主要介绍了通过vue刷新左侧菜单栏操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    小编最近在做一个vue前端项目,需要实现弹窗的拖拽,四边拉伸及对角线拉伸,以及弹窗边界处理功能,本文通过实例代码给大家分享我的实现过程及遇到问题解决方法,感兴趣的朋友一起看看吧
    2021-08-08
  • vue项目引入antDesignUI组件实现

    vue项目引入antDesignUI组件实现

    本文介绍了如何以Vue引入antDesignUI,主要包括下载安装、配置和引入组件等步骤,通过本文,读者可以快速了解antDesignUI在Vue中的应用,感兴趣的可以了解一下
    2023-08-08
  • iview实现select tree树形下拉框的示例代码

    iview实现select tree树形下拉框的示例代码

    这篇文章主要介绍了iview实现select tree树形下拉框的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • vue Keep-alive组件缓存的简单使用代码

    vue Keep-alive组件缓存的简单使用代码

    keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能,下面这篇文章主要给大家介绍了关于vue Keep-alive组件缓存的简单使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Vue各种loader的基本配置与使用示例教程

    Vue各种loader的基本配置与使用示例教程

    这篇文章主要介绍了Vue 各种loader的基本配置与使用,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • vue+element实现动态加载表单

    vue+element实现动态加载表单

    这篇文章主要为大家详细介绍了vue+element实现动态加载表单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • vue中v-cloak的作用和原理解析

    vue中v-cloak的作用和原理解析

    v-cloak原理是先通过样式隐藏内容,然后在内存中进行值的替换,将替换的内容再反馈给界面,数据渲染完场之后,v-cloak 属性会被自动去除,本文详细介绍vue中v-cloak的作用和原理解析,感兴趣的朋友一起看看吧
    2023-09-09

最新评论