vue3插件——vue-web-screen-shot——实现页面截图功能

这篇具有很好参考价值的文章主要介绍了vue3插件——vue-web-screen-shot——实现页面截图功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在看前同事发我的vue3框架时,发现他们有个功能是要实现页面截图功能。

效果图如下:

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript
vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript

最近项目遇到的要求是弹出框上传文件,需要用到页面截图,由于使用的是Vue3的框架于是选择用vue-web-screen-shot组件进行操作。(由于插件是Vue3编写的,所以只适用于Vue3的项目,如果是Vue2的项目,截图组件可以使用js-web-screen-shot)

下面介绍实现步骤:

1.操作步骤

1.1在项目中添加vvue-web-screen-shot组件

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript
我这边安装的版本是1.5.2,安装代码指令如下:

yarn add vue-web-screen-shot

或者

npm install vue-web-screen-shot --save

1.2在项目入口文件导入组件——main.ts

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript
main.ts文件中导入组件

import screenShort from 'vue-web-screen-shot';
const createClient = async():Promise<void>=>{
	const app = createApp(App);
	app.use(screenShort,{enableWebRtc:false});
	app.mount('#app');
}

1.3在需要使用的页面使用组件

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript

<a-upload ref="uploadRef" v-model:file-list="issueForm.fileList" action="/api/sys-storage/image/upload" 
:headers="{
	'Fusion-Auth':getToken()||'',//此处放头部信息
}"
:limit="1"
accept="image/png,image/jpeg,image/jpg"
image-preview
list-type="picture-card"
:show-link="true"
:on-button-click="handleButtonClick"
/>

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必会知识点,vue.js,前端,javascript

<screen-short v-if="screenshotStatus" @destroy-component="destroyComponent" @get-image-data="completeCallback"></screen-short>

如果将screen-short组件放在弹出窗内部,则隐藏弹出窗时会连同截屏组件一起隐藏,所以建议放在外部,并给弹出窗单独加一个div,用showScreenShort控制弹出窗显示和隐藏。

参数说明:
如示例代码所示,在template中直接使用screen-short插件,绑定组件需要的事件处理函数即可。
接下来就跟大家讲下组件中每个属性的意义:

screenshotStatus:用于控制组件是否出现在dom中
@destroy-component:用于接收截图组件传递的销毁消息,我们需要在对应的函数中销毁截图组件
@get-image-data:用于接收截图组件传递的框选区的base64图片信息,我们需要为他提供一个函数来接收截图组件传递的消息

可选参数
截图插件有一个可选参数,它接收一个对象,对象每个key的作用如下:

enableWebRtc:是否启用webrtc,值为boolean类型,值为false则使用html2canvas来截图
level:截图容器层级,值为number类型
clickCutFullScreen:单击截全屏启用状态,值为boolean类型,默认为false
hiddenToolIco:需要隐藏的截图工具栏图标,值为{save?:boolean;undo?:boolean;confirm?:boolean}类型,默认为{}。传你需要隐藏的图标名称,将值设为true即可。
enableCORS:html2canvas截图模式下跨域的启用状态,值为boolean类型,默认为false
proxyAddress:html2canvas截图模式下的图片服务器代理地址,值为string类型,默认为undefined

1.4在页面截图后使用获得的64位编码转为图片文件形式进行上传

<script setup lang="ts">
const screenshotStatus = ref<boolean>(false);
const destroyComponent = (status:boolean)=>{
	screenshotStatus.value = status;
}
const completeCallback = async (base64data:any)=>{
	const bytes = window.atob(base64data.split(',')[1]);
	const buffer = new ArrayBuffer(bytes.length);
	const uint = ew Uint8Array(buffer);
	for(let j = 0;j<bytes.length:j++){
		uint[j] = bytes.charCodeAt(j);
	}
	const imageFile = new Blob([buffer],{type:'image/jpeg'});
	const formData = new FormData();
	formData.append('file',imageFile,`${Data.now()}.jpeg`);
	const res = await fileUpload(formData);
	if(res.status){
		curPicToken.value = res.data.fileToken;
		issueForm.fileList = [];
		issueForm.fileList.push({
			url:`/api/sys-storage/download_image?f8s=${res.data.fileToken]`,
		})
	}
}
const handleButtonClick = (event:Event):Promise<FileList>|void=>{
	event.preventDefault();
	screenshotStatus.value = true;
}
</script>

2.参考链接:

vue-web-screen-shot 前端实现页面截图:https://blog.csdn.net/w1060436872/article/details/129065847

arco.design—上传 Upload:https://arco.design/vue/component/upload文章来源地址https://www.toymoban.com/news/detail-755665.html

到了这里,关于vue3插件——vue-web-screen-shot——实现页面截图功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3使用vue-masonry插件实现瀑布流

    《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录 参数: item-selector transition-duration column-width origin-left origin-top gutter 前言: 之前其实有分享过一篇纯CSS实现瀑布流的方法: https://oliver.blog.csdn.net/article/details/126450691,但纯CSS实现的方案都不是比较好的方案,总归有一些各式各样的

    2024年01月19日
    浏览(26)
  • vue3中的吸顶导航交互实现 | VueUse插件

    目的:浏览器上下滚动时,若距离顶部的滚动距离大于78px,吸顶导航显示,小于78px隐藏。使 用vueuse插件中的 useScroll方法 ​​​​​​​ 和 动态类名控制 进行实现 项目中导入,解构出 useScroll方法的其他参数: 参考:useScroll | VueUse中文文档 (vueusejs.com)

    2024年02月09日
    浏览(35)
  • vue3 实现门户网站页面鼠标滚轮控制页面上下滚动---类似轮播图

    案例参考:首页_CNESA 储能研究平台 //监听鼠标滚动事件  window.addEventListener(\\\'mousewheel\\\', debounce(methodB,300), true)||window.addEventListener(\\\"DOMMouseScroll\\\",debounce(methodB,300),false) const debounce = (func, wait) ={         let timeout;         return  function() {             let context = this;            

    2024年02月12日
    浏览(39)
  • vue3如何实现点击不同的菜单页切换局部页面

    我们可以使用router来实现 去饿了么(element-plus)找到自己喜欢的页面然后按需导入,以下以自己的例子来实现 首先引入布局容器 然后引入菜单栏 引入这两个,先看效果 此时基本的页面准备好了 容器是有这个属性的,但默认值为false 并把菜单栏里对应的文字改为router-link 在

    2024年02月16日
    浏览(52)
  • vue3前端实现全屏显示,元素垂直填满页面

    1、 toggleFullscreen方法实现选定元素全屏展示 2、使用flex属性+ flex-direction 实现垂直布局填满整个页面

    2024年01月16日
    浏览(31)
  • vue3 使用 mitt 插件实现非父子组件传值

    介绍 : mitt 是一个 JavaScript 库,用于实现事件的订阅和发布 1、安装 2、新建 utils/eventBus.ts 文件 3、使用

    2024年02月09日
    浏览(41)
  • vue3+axios+router实现页面跳转及登录

    本篇文章主要是,使用 vite 创建一个vue3 书籍商城的小型案例,项目中主要运用到路由router及接口axios等知识点。 1.开始搭建项目框架,使用vite来构建项目 2.由于vite构建的项目中需要自己手动下载路由以及创建路由文件夹,所以在创建好的项目文档中找到src文件夹,在src文件

    2024年02月04日
    浏览(41)
  • vue3中如何实现通过点击不同的按钮切换不同的页面

    完成以上需求,我们可以使用vue中的component标签来实现。 component是Vue.js中一个特殊的标签,用于动态地绑定其它组件。它可以与v-bind:is指令一起使用,来决定要渲染哪个组件。下面是示例代码

    2024年02月09日
    浏览(41)
  • vue3+antd——实现App.vue页面实时获取权限+用户信息的功能——基础积累

    之前写过一篇文章关于vue3+antd的框架模板,链接如下:http://t.csdn.cn/9dZMS 下面针对 App.vue 页面实时获取权限+用户信息的功能做一下记录 重要的代码如下: 通过 computed 计算属性进行用户信息的实时监听,用户信息更改时也会重新触发user参数的变化,最终导致user内容保持为最

    2024年02月14日
    浏览(25)
  • 基于vscode实现vue3项目创建启动+安装配置路由vue-router实现单页面组件切换

    访问https://nodejs.org/en,点击下载最新版本的nodejs,并安装。 在项目目录文件下,通过cmd运行下述指令。 依次输入下列命令,启动vue项目 在浏览器中加载http://localhost:5173/,页面加载成功,说明vue项目安装启动成功。 建议安装第三方库通过vscode中的终端来操作,项目启动通过

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包