码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用vue开发中一些图片保存的方法


    情景一:
    用原生的a标签进行下载

    <a href="图片路径" download="download.png">下载图片a>
    
    • 1

    情景二:
    下载html2canvas插件, 在页面中进行引用

    import html2canvas from "html2canvas"
    
    <img src="图片地址" ref="toast">
    <span @click="download">下载图片span>
    
    <script>
    export default {
     methods: {
      download(){
         let e = this.$refs.toast;
         html2canvas(e, {
             allowTaint: true,
             useCORS: true, // 设置跨域
             tainttest: true, // 检测每张图片都已经加载完成
             backgroundColor: null, // 背景色, 转换图片可能会有白色底色,不要的话就null
         }).then((canvas) => {
             const link = document.createElement("a"); // 创建一个超链接对象实例
             link.download = "download.png"; // 设置要下载的图片的名称
             link.href = canvas.toDataURL(); // 将图片的URL设置到超链接的href中
             link.click(); // 触发超链接的点击事件
         });
      },
     }
    }
    script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    情景三:
    当在uniapp或者小程序webview开发中, 需要保存h5页面中的图片

    <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js">script>
    
    • 1

    .vue文件

    <img :src="url" ref="toast">
    <span @click="download">下载图片span>
    <srcipt>
    export default {
     methods: {
      download(){
        wx.miniProgram.getEnv(function (res) {
            if (res.miniprogram) {
            	wx.miniProgram.navigateTo({
                    url: "小程序中的页面路径?url="+encodeURIComponent(this.url),
                });
            }
        });
      }
     }
    }
    srcipt>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    小程序/uniapp中的页面(此处使用uniapp)

    <srcipt>
    export default {
     onLoad: function(options){
     	this.download(options)
     },
     methods: {
     	download(options){
     		let url = decodeURIComponent(options.url)
     		uni.downloadFile({
    			url: url ,
    			success: (data) => {
    				console.log('wx.env',wx.env, data)
    				if (data.statusCode === 200) {
    					uni.saveImageToPhotosAlbum({ //文件保存到本地
    						filePath: data.tempFilePath,
    						success: function(res) {
    							uni.showToast({
    								icon: 'success',
    								mask: true,
    								title: '保存成功', 
    								duration: 3000,
    							});
    						},
    						fail: (err) => {
    							if(err.errMsg == "saveImageToPhotosAlbum:fail cancel"){
    								uni.showToast({
    									icon: 'error',
    									mask: true,
    									title: '取消保存', 
    									duration: 3000,
    								});
    							}else{
    								uni.hideLoading()
    								uni.showModal({
    									title:'如要使用保存功能,需要确认授权',
    									content: '请确认授权,否则无法保存到相册',
    									success:res =>{
    										if (res.confirm) {
    											uni.openSetting()     
    										}
    									}
    								})
    							}
    						}
    					});
    				}
    			},
    			fail: (err) => {
    				console.log(err);
    				uni.showToast({
    					icon: 'error',
    					mask: true,
    					title: '失败请重新保存',
    				});
    			},
    		});
     	}
     }
    }
    srcipt>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
  • 相关阅读:
    C# 监测 Windows 设备变动事件
    Centos7 开机时遇到initramfs-xxx.img not found错误导致虚拟机无法开启问题处理
    如何使用http来获取thingsbord中的设备数据
    山东菏泽家乡网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
    Service Mesh之Istio基础入门
    git 开发 分支 同步
    无线定位中TDOA时延估计算法matlab仿真
    zabbix 7.0 SNMP Hex数据预处理新功能
    【中级软件设计师】上午题12-软件工程(1):软件工程模型、敏捷方法、软件需求、系统设计
    QT项目中通过数据封装实现Json结构和数据类之间的相互转换
  • 原文地址:https://blog.csdn.net/qq_37146616/article/details/134332694
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号