当前位置: 首页 > news >正文

纯前端实现截图功能

纯前端实现截图功能

  • 一、插件
  • 二、主要代码

一、插件

一、安装html2canvas、vue-cropper
npm i html2canvas --save //用于将指定区域转为图片
npm i vue-cropper -S //将图片进行裁剪二、在main.js注册vue-cropper组件
import VueCropper from 'vue-cropper'
Vue.use(VueCropper)三、页面中引入html2canvas
import html2canvas from "html2canvas"

二、主要代码

<template><div><h2 style="font-size: 20px" @click="tailoring">裁剪</h2><!--继续写页面的其他内容 pop_alert可封装成组件使用--><p>截图展示的图片</p><img style="border: 5px solid #000000" :src="uploadImg" alt="" /><div class="pop_alert" v-if="show"><vueCropper@mouseenter.native="enter"@mouseleave.native="leave"ref="cropper":img="uploadImg":outputSize="option.size":outputType="option.outputType":info="true":full="option.full":canMove="option.canMove":canMoveBox="option.canMoveBox":original="option.original":autoCrop="option.autoCrop":fixed="option.fixed":fixedNumber="option.fixedNumber":centerBox="option.centerBox":infoTrue="option.infoTrue":fixedBox="option.fixedBox"style="background-image: none"></vueCropper><div class="btn_box"><div @click="save">确认截图</div><div @click="close">取消</div></div></div></div>
</template>
<script>
import html2canvas from 'html2canvas'
export default {data() {return {option: {info: true, // 裁剪框的大小信息outputSize: 0.8, // 裁剪生成图片的质量outputType: 'jpeg', // 裁剪生成图片的格式canScale: false, // 图片是否允许滚轮缩放autoCrop: false, // 是否默认生成截图框fixedBox: false, // 固定截图框大小 不允许改变fixed: false, // 是否开启截图框宽高固定比例fixedNumber: [7, 5], // 截图框的宽高比例full: true, // 是否输出原图比例的截图canMove: false, //时候可以移动原图canMoveBox: true, // 截图框能否拖动original: false, // 上传图片按照原始比例渲染centerBox: false, // 截图框是否被限制在图片里面infoTrue: true, // true 为展示真实输出图片宽高 false 展示看到的截图框宽高},uploadImg: '',show: false,}},methods: {tailoring() {//裁剪this.$nextTick(() => {html2canvas(document.body, {}).then(canvas => {let dataURL = canvas.toDataURL('image/png')console.log(dataURL, 'dataURL')this.uploadImg = dataURLthis.show = true})})},enter() {if (this.uploadImg == '') {return}this.$refs.cropper.startCrop() //开始裁剪},leave() {this.$refs.cropper.stopCrop() //停止裁剪},save() {//确认截图this.$refs.cropper.getCropData(data => {//获取截图的base64格式数据console.log(data)this.show = false})// this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据//   this.cutImg = data;// });},close() {//取消this.show = false},},
}
</script>
<style>
.pop_alert {width: 100%;height: 100%;position: absolute;top: 0;left: 0;border: 1px dashed red;background-color: #000000;
}
.btn_box {position: absolute;top: 0;color: red;right: 0;font-size: 30px;display: flex;align-items: center;z-index: 6666;
}
</style>

链接: https://www.cnblogs.com/zwbsoft/p/16657954.html

相关文章:

  • 微信小程序之九宫格抽奖
  • 【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】
  • 【C++】多态(多态的原理)
  • es数据备份和迁移Elasticsearch
  • 邮件系统中的CC和BCC含义
  • 第十章 DashBoard
  • 从零开始傅里叶变换
  • Design-expert中的ANOVA分析
  • 搜维尔科技:第九届元宇宙数字人设计大赛入围作品名单
  • 如何设计与构建企业IT数字化运维体系与目标
  • 使用 ASM 修改字段类型,解决闪退问题
  • 如何*永久*禁用edge打开PDF文件?
  • 高中数学:平面向量-数量积(向量与向量的乘积)与投影
  • Spring Cloud Alibaba-08-SMS短信服务
  • 逐元素比较
  • $translatePartialLoader加载失败及解决方式
  • [NodeJS] 关于Buffer
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • angular2 简述
  • Computed property XXX was assigned to but it has no setter
  • css的样式优先级
  • github指令
  • javascript 哈希表
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Linux CTF 逆向入门
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Promise面试题,控制异步流程
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Swift 中的尾递归和蹦床
  • 从零开始学习部署
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 国内开源镜像站点
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • $.ajax()
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (6)设计一个TimeMap
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (初研) Sentence-embedding fine-tune notebook
  • (论文阅读11/100)Fast R-CNN
  • (五)关系数据库标准语言SQL
  • (一) springboot详细介绍
  • (转)memcache、redis缓存
  • (转载)OpenStack Hacker养成指南
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net core Swagger 过滤部分Api
  • .NET 分布式技术比较
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net经典笔试题
  • .NET中GET与SET的用法
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .net中我喜欢的两种验证码
  • /proc/interrupts 和 /proc/stat 查看中断的情况