- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- Vue拖動(dòng)截圖功能的簡(jiǎn)單實(shí)現方法
拖動(dòng)鼠標進(jìn)行頁(yè)面截圖(也可指定區域拖動(dòng)截圖)
npm i html2canvas --save //用于將指定區域轉為圖片 npm i vue-cropper -S //將圖片進(jìn)行裁剪
import VueCropper from 'vue-cropper' Vue.use(VueCropper)
import html2canvas from "html2canvas" export default{ }
1、將指定區域轉為圖片
this.$nextTick(()=>{ html2canvas(document.body,{}).then(canvas => { let dataURL = canvas.toDataURL("image/png"); this.uploadImg = dataURL this.loading = true }); })
這里是將body整個(gè)頁(yè)面轉為圖片,得到base64格式數據,其他區域直接獲取class或者id
2、將生成的圖片進(jìn)行拖動(dòng)截圖
<template> <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> </template> <script> export default{ data(){ option: { info: true, // 裁剪框的大小信息 outputSize: 0.8, // 裁剪生成圖片的質(zhì)量 outputType: "jpeg", // 裁剪生成圖片的格式 canScale: false, // 圖片是否允許滾輪縮放 autoCrop: false, // 是否默認生成截圖框 fixedBox: false, // 固定截圖框大小 不允許改變 fixed: false, // 是否開(kāi)啟截圖框寬高固定比例 fixedNumber: [7, 5], // 截圖框的寬高比例 full: true, // 是否輸出原圖比例的截圖 canMove: false, //時(shí)候可以移動(dòng)原圖 canMoveBox: true, // 截圖框能否拖動(dòng) original: false, // 上傳圖片按照原始比例渲染 centerBox: false, // 截圖框是否被限制在圖片里面 infoTrue: true // true 為展示真實(shí)輸出圖片寬高 false 展示看到的截圖框寬高 }, uploadImg:"", show: false }, methods:{ enter() { if (this.uploadImg == "") { return; } this.$refs.cropper.startCrop(); //開(kāi)始裁剪 }, 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>
<template> <div> <div @click="tailoring">裁剪</div> <!--繼續寫(xiě)頁(yè)面的其他內容 pop_alert可封裝成組件使用--> <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, // 裁剪生成圖片的質(zhì)量 outputType: "jpeg", // 裁剪生成圖片的格式 canScale: false, // 圖片是否允許滾輪縮放 autoCrop: false, // 是否默認生成截圖框 fixedBox: false, // 固定截圖框大小 不允許改變 fixed: false, // 是否開(kāi)啟截圖框寬高固定比例 fixedNumber: [7, 5], // 截圖框的寬高比例 full: true, // 是否輸出原圖比例的截圖 canMove: false, //時(shí)候可以移動(dòng)原圖 canMoveBox: true, // 截圖框能否拖動(dòng) original: false, // 上傳圖片按照原始比例渲染 centerBox: false, // 截圖框是否被限制在圖片里面 infoTrue: true // true 為展示真實(shí)輸出圖片寬高 false 展示看到的截圖框寬高 }, uploadImg:"", show: false } }, methods:{ tailoring(){ //裁剪 this.$nextTick(()=>{ html2canvas(document.body,{}).then(canvas => { let dataURL = canvas.toDataURL("image/png"); this.uploadImg = dataURL this.show = true }); }) }, enter() { if (this.uploadImg == "") { return; } this.$refs.cropper.startCrop(); //開(kāi)始裁剪 }, 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>
到此這篇關(guān)于Vue拖動(dòng)截圖功能實(shí)現的文章就介紹到這了,更多相關(guān)Vue拖動(dòng)截圖功能內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站