返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue 实现网页截图功能详解
  • 190
分享到

vue 实现网页截图功能详解

2024-04-02 19:04:59 190人浏览 泡泡鱼
摘要

最近项目有一个需求,需要上传图片,但是客户上传的图片大小不一,所以我们需要规定客户的图片比例,但又需要是客户所需的,所以就想到了截图 实现效果 我们的架构是Vue,所以用的是一个v

最近项目有一个需求,需要上传图片,但是客户上传的图片大小不一,所以我们需要规定客户的图片比例,但又需要是客户所需的,所以就想到了截图

实现效果

我们的架构Vue,所以用的是一个vue的截图插件

安装插件:npm install vue-cropper --save-dev

引入组件


 import Vue from 'vue';
 import { VueCropper } from "vue-cropper";

 Vue.use(VueCropper)

核心代码


 <div>
            <span class="spanStyle">产品图片:</span>
            <!--整个图片预览的div-->
            <div style="display:flex;padding-left: 300px;">
              <div class="info-item" style="flex:1;margin-left:-160px;margin-top: -25px">
                <label class="btn btn-orange theme-bg-gray theme-white w90" for="uploads" style="display:inline-block;width: 70px;padding: 0;text-align: center;line-height: 28px;" >选择图片</label>
                <input type="file" id="uploads" :value="imgFile" style="position:absolute; clip:rect(0 0 0 0);" accept="image/png, image/jpeg, image/gif, image/jpg" @change="uploadImg($event, 1)">
                <div class="line" style="margin-left: -280px;margin-top: 85px;">
                  <div class="cropper-content" style="margin-top:-60px;margin-left:160px;">
                    <div class="cropper">
                      <vueCropper
                        ref="cropper"
                        :img="option.img"
                        :outputSize="option.size"
                        :outputType="option.outputType"
                        :info="true"
                        :full="option.full"
                        :canMove="option.canMove"
                        :canMoveBox="option.canMoveBox"
                        :original="option.original"
                        :autoCrop="option.autoCrop"
                        :autoCropWidth="option.autoCropWidth"
                        :autoCropHeight="option.autoCropHeight"
                        :fixedBox="option.fixedBox"
                        @realTime="realTime"
                      ></vueCropper>
                    </div>
                    <!--截取完的图片展示div-->
                    <div style="margin-left:700px;">
                      <div class="show-preview" :style="{'width': '300px', 'height':'150px',  'overflow': 'hidden', 'margin-left': '-650px'}">
                        <div :style="previews.div" >
                          <img :src="previews.url" :style="previews.img">
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>

 预览的方法


data (){
	return{
		 headImg:'',
                //剪切图片上传
                crap: false,
                previews: {},
                option: {
                    img: '',
                    outputSize:1, //剪切后的图片质量(0.1-1)
                    full: false,//输出原图比例截图 props名full
                    outputType: 'png',
                    canMove: true,
                    original: false,
                    canMoveBox: true,
                    autoCrop: true,
                    autoCropWidth: 300,
                    autoCropHeight: 150,
                    fixedBox: true
                },
                fileName:'',  //本机文件地址
                downImg: '#',
                imgFile:'',
                uploadImgRelaPath:'', //上传后的图片的地址(不带服务器域名)
	}
},
methods:{
	// 实时预览函数
   realTime(data) {
       console.log('realTime')
       this.previews = data
   },
   //选择本地图片
   uploadImg(e, num) {
       console.log('uploadImg');
       var _this = this;
       //上传图片
       var file = e.target.files[0]
       _this.fileName = file.name;
       if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
           alert('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种')
           return false
       }
       var reader = new FileReader();
       reader.onload =(e) => {
           let data;
           if (typeof e.target.result === 'object') {
               // 把Array Buffer转化为blob 如果是base64不需要
               data = window.URL.createObjectURL(new Blob([e.target.result]))
           }
           else {
               data = e.target.result
           }
           if (num === 1) {
               _this.option.img = data
           } else if (num === 2) {
               _this.example2.img = data
           }
       }
       // // 转化为blob
       reader.readAsArrayBuffer(file);
   }
}
 

然后我们要获取截取完之后的图片,是通过Cropper的回调函数来获取它的图片,这里我们获取的是我们转为blob格式的图片(不转显示不了)
这边是因为后台就是用file类型接收的,所以我需要再把blob转为file,然后才用fORMData上传文件


productAdd(){
this.$refs.cropper.getCropBlob((data) => {
	  //这个data就是我们截取后的blob图片
	  let formData = new FormData();
	  //获取文件名,因为在转成file里面不能用this.所以需要用一个变量来赋值
      var name=this.fileName
       var file = new File([data], name, {type: data.type, lastModified: Date.now()});
       formData.append("files",file)
       new Promise((resolve, reject) => {
           productAdd(formData).then(response => {
               if (response.code == 20000) {
                   Dialog.alert({
                       title: '提示',
                       message: '保存成功!'
                   }).then(() => {
                       this.back('/productInfo')
                   });

               }
           }).catch(error => {
               reject(error)
           })
       })
   })
}

实际运用到自己的项目中还需改动,比如编辑图片还需回显,上传多张剪切的图片等等…

以上就是vue 实现网页截图功能详解的详细内容,更多关于vue 网页截图的资料请关注编程网其它相关文章!

--结束END--

本文标题: vue 实现网页截图功能详解

本文链接: https://lsjlt.com/news/157737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue 实现网页截图功能详解
    最近项目有一个需求,需要上传图片,但是客户上传的图片大小不一,所以我们需要规定客户的图片比例,但又需要是客户所需的,所以就想到了截图 实现效果 我们的架构是vue,所以用的是一个v...
    99+
    2024-04-02
  • vue项目中如何实现网页的截图功能 (html2canvas)
    目录vue实现网页的截图功能 (html2canvas)先安装html2canvas引入html2canvas主要实现代码在使用html2canvas时vue拖动截图功能实现安装ht...
    99+
    2023-02-18
    vue网页截图功能 vue网页截图 vue实现网页截图
  • 怎么用vue实现网页截图
    这篇文章给大家分享的是有关怎么用vue实现网页截图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、安装html2Canvasnpm install html2canvas --sa...
    99+
    2023-06-25
  • Vue+canvas实现视频截图功能
    开发过程中遇到一个实际问题,上传的视频需要提供视频封面(视频封面必填)。封面可以自己制作并上传,但是这样需要脱离网站,用其他方式制作封面,使用体验并不友好,因此第一个想到的方案是:上...
    99+
    2024-04-02
  • 在linux (centos)上使用puppeteer实现网页截图功能
    你在linux上安装puppeteer时可能遇到如下问题,本文将引导你如何爬坑! > puppeteer@2.0.0 install /www/node_modules/puppeteer > node i...
    99+
    2022-06-04
    linux 网页截图 linux puppeteer
  • 怎么使用PHP实现网页自动截图功能
    今天小编给大家分享一下怎么使用PHP实现网页自动截图功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、准备工作要实现网页...
    99+
    2023-07-05
  • vue项目中canvas实现截图功能
    本文实例为大家分享了vue项目中canvas实现截图功能的具体代码,供大家参考,具体内容如下 实现效果: 整理一下最近在vue项目中做的一个截图功能(只能够截取图片),即用鼠标在画...
    99+
    2024-04-02
  • Vue怎么实现拖动截图功能
    本篇内容介绍了“Vue怎么实现拖动截图功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装html2canvas、vue-croppe...
    99+
    2023-06-20
  • Python实现超快窗口截图功能详解
    实现思路是先获取到当前最上面活动的窗口信息,然后提取该窗口的名称信息。 之后获取窗口的坐标信息,即左上角的开始坐标及右下角的结束坐标。最后直接截图并将截图的图片进行展示。 其中用到...
    99+
    2024-04-02
  • 如何使用Vue实现拖动截图功能
    这篇文章主要介绍了如何使用Vue实现拖动截图功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现拖动截图功能文章都会有所收获,下面我们一起来看看吧。一、安装html2canvas、vue-cro...
    99+
    2023-07-04
  • 如何用vue实现网页截图你知道吗
    目录1、安装html2Canvas2、在需要的vue组件中引入3、编写一个截图按钮4、调用函数toImage总结 1、安装html2Canvas npm install html...
    99+
    2024-04-02
  • WPF仿微信实现截图功能的方法详解
    目录前言 一、ScreenCut.cs 代码如下二、ScreenCut.xaml 代码如下 三、ScreenCutExample.xaml 代码如下每日一笑 肚子...
    99+
    2024-04-02
  • Vue拖动截图功能的简单实现方法
    拖动鼠标进行页面截图(也可指定区域拖动截图) 一、安装html2canvas、vue-cropper npm i html2canvas --save //用于...
    99+
    2024-04-02
  • 怎么使用Vue+canvas实现视频截图功能
    这篇“怎么使用Vue+canvas实现视频截图功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Vue+canvas...
    99+
    2023-07-02
  • vue实现分页功能
    本文实例为大家分享了vue实现分页功能的具体代码,供大家参考,具体内容如下 使用组件分页 自己写分页 一、组件分页 <el-paginatio...
    99+
    2024-04-02
  • Android实现拍照截图功能
    本文将向大家展示如何拍照截图。 先看看效果图: 拍照截图有点儿特殊,要知道,现在的Android智能手机的摄像头都是几百万的像素,拍出来的图片都是非常大的。因此,我们不能像对...
    99+
    2022-06-06
    Android
  • VBS怎么实现截图功能
    本篇内容主要讲解“VBS怎么实现截图功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS怎么实现截图功能”吧!以下代码:'VBS截屏.vbs' Win7x64&nb...
    99+
    2023-06-08
  • golang怎么实现截图功能
    这篇文章主要介绍“golang怎么实现截图功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“golang怎么实现截图功能”文章能帮助大家解决问题。在Golang中,实现截图功能主要分为以下几个步骤:...
    99+
    2023-07-06
  • vue项目中怎么使用canvas实现截图功能
    本文小编为大家详细介绍“vue项目中怎么使用canvas实现截图功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中怎么使用canvas实现截图功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现效...
    99+
    2023-07-02
  • vue实现一个简单的分页功能实例详解
    这是一个简单的分页功能,只能够前端使用,数据不能通过后台服务器进行更改,能容已经写死了。 下面的内容我是在做一个关于婚纱项目中用到的,当时好久没用vue了,就上网区找了别人的博客来看...
    99+
    2022-12-24
    vue分页功能 vue实现一个简单的分页功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作