首页 > 其他分享 >【vue2】实现长按图片保存功能

【vue2】实现长按图片保存功能

时间:2023-10-08 16:56:14浏览次数:27  
标签:canvas image 保存 timer height let vue2 图片

<span
            :class="[$style.wxCode, isShow && $style['show']]"
            @touchstart="touchStart()"
            @touchend="touchEnd()"
          ></span>

  

ps.span元素为图片元素,我这里把图片设置为元素背景了,可以直接用img标签实现。以下是方法代码:

    showWxCode() {
      this.isShow = true;
    },
    touchEnd() {
      //手指离开
      clearTimeout(this.timer);
    },
    touchStart() {
      //手指触摸
      clearTimeout(this.timer); //再次清空定时器,防止重复注册定时器
      this.timer = setTimeout(() => {
        this.downloadImage(require("./images/wx.jpg"), "wx");
      }, 1000);
    },
    downloadImage(imgsrc, name) {
      //下载图片地址和图片名
      let image = new Image();
      // 解决跨域 Canvas 污染问题
      image.setAttribute("crossOrigin", "anonymous");
      image.onload = () => {
        let canvas = document.createElement("canvas");
        canvas.width = image.width;
        canvas.height = image.height;
        let context = canvas.getContext("2d");
        context.drawImage(image, 0, 0, image.width, image.height);
        let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
        let a = document.createElement("a"); // 生成一个a元素
        let event = new MouseEvent("click"); // 创建一个单击事件
        a.download = name || "photo"; // 设置图片名称
        a.href = url; // 将生成的URL设置为a.href属性
        a.dispatchEvent(event); // 触发a的单击事件
      };
      image.src = imgsrc;
    },

  

标签:canvas,image,保存,timer,height,let,vue2,图片
From: https://www.cnblogs.com/nangras/p/17749586.html

相关文章

  • 学生管理系统使用集合保存,不是用数据库的(仅供参考,网上找的,记录用)
    packagecom.ima;importcom.itheima.Student;importjava.util.ArrayList;importjava.util.Scanner;/*学生管理系统*/publicclassStudentManager{publicstaticvoidmain(String[]args){//创建集合对象,用于存储学生数据ArrayList<Student>a......
  • 【实用】登录图形认证 图形码 验证码 中文图形验证码 动态图形验证码 图片验证码 验证
    后端测试: 主要code:https://www.cnblogs.com/liuguiqing/p/17722366.html ......
  • vue3比vue2优势
    Vue3相对于Vue2有一些显著的优势,主要集中在性能、开发体验和一些新的特性上:性能提升:虚拟DOM的优化:Vue3使用了更高效的虚拟DOM算法,减少了不必要的DOM操作,提高了渲染性能。编译器优化:Vue3的编译器生成的代码更为紧凑和高效,加速了首次渲染和更新速度。更小的包大小:Vu......
  • html svg图片 如何不保持横纵比
    图片不保持横纵比是一件很烦的事背景图我们可以使用background-size图片可以使用object-fit来保持横纵比但有时svg图片要不保持横纵比明明指定了宽高也没有用原来矢量图天生就是锁定了横纵比那怎么让svg不保持横纵比呢使用preserveAspectRatio:none<svgpreserveAspectRat......
  • Python 图片管理工具介绍(筛像素+从文件夹取出图片并放到文件夹内+excel读取)
    功能介绍:这是一个Python脚本工具,用于批量管理和复制图片。其主要功能如下:从Excel表格读取数据:程序使用openpyxl库从Excel文件中读取数据,其中A列包含源图片的路径(可以有多个路径,用逗号分隔),B列包含目标目录。图片筛选:仅复制最小维度大于800像素的图片,这可以确保目标目录中的......
  • vue2自定义指令实现el-dropdown下拉菜单项最小宽度等于内容宽度
    //在main.js添加Vue.directive('siem-dropdown',function(el,binding,vNode){letul=el.querySelector("ul")letuid=vNode.componentInstance._uid;//获取下拉菜单实例的uidletsiemDropdownClass=`siem-dropdown-${uid}`;ul.cla......
  • getRefs is undefined html vue2项目 报错
    vue2项目提示getRefsisundefined在div上面写了,ref,还写了v-if然后再watch中操作了ref导致报错。分析:组件因为v-if为false没有注册和渲染,在操作的时候还使用了this.$refs函数就会获取不到解决办法:v-if换成v-show ......
  • Swiper横向循环焦点图片展示
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"><title>Swiper的切换</title><linkrel="stylesheet"href="css/swiper.min.css"><linkrel="styleshe......
  • 高效便捷,让图片分享更轻松——推荐优秀图床网站
    当今社交媒体充斥着海量的图片分享,无论是个人用户还是企业机构,我们都需要一个高效便捷的图床网站来管理和分享图片。在众多图床网站中,我们强烈推荐一家出色的平台,它将为您带来无与伦比的优质体验——让我们来看一看这个令人印象深刻的图床网站。那就是华趣图床1.无限容量,极速上......
  • idea自定义设置背景图片
      这样就设置完成了......