微信小程序canvas画布图片保存到相册官方授权、自定义授权、保存

news2025/2/22 17:54:08

关键步骤介绍

wx.getSetting可以获取授权信息。

wx.authorize首次授权时会打开弹框让用户授权,若用户已选择同意或拒绝,后续不会再显示授权弹框。

如果授权信息显示未进行相册授权,则打开自定义弹框(show_auth: true)让用户选择是否自行配置授权。

如果授权信息显示已进行相册授权,则保存canvas为图片并保存到相册。

.js

  download_canvas(e){
    wx.getSetting()
    .then(get_s_res=>{
      wx.authorize({
        scope: 'scope.writePhotosAlbum',
      })
      if(!get_s_res.authSetting['scope.writePhotosAlbum']){
        this.setData({
          show_auth: true
        })
      }else{
        wx.canvasToTempFilePath({
          x: 0,
          y: 0,
          width: this.data.canvas.width/this.data.pixelRatio,
          height: this.data.canvas.height/this.data.pixelRatio,
          destWidth: this.data.canvas.width,
          destHeight: this.data.canvas.height,
          canvas: this.data.canvas
        })
        .then(c_res=>{
          wx.saveImageToPhotosAlbum({
            filePath: c_res.tempFilePath,
          })
          .then(s_res=>{
            wx.showToast({
              title: '保存到相册成功',
              icon: 'success',
              duration: 2000
            })
          })
          .catch(s_res=>{
            console.log('error',s_res)
          })
        })
        .catch(c_res=>{
          console.log('error',c_res)
        })
      }
    })
    .catch(g_s_res=>{
      console.log('error',g_s_res)
    })

Component实现自定义授权弹框

在component定义授权确认弹框,点击确认,打开settings界面让用户设置授权信息。

 .wxml

title和content显示内容由调用主体传入。

<view class="modal-mask" wx:if="{{show}}">
  <view class="modal" wx:if="{{show}}">
    <view class="info">
      <label class="title">{{title}}</label>
      <text class="content">{{content}}</text>
    </view>   
    <view class="op-button">
      <button size="mini" bind:tap="cancel_and_close" style="box-shadow: 0 0 5rpx darkgray;">取消</button>
      <button size="mini" bind:tap="open_setting" type="primary">确认</button>
    </view>
  </view>
</view>

wxss:

modal-mask实现遮罩效果。

.modal-mask{
  display: flex;
  justify-content: center;
  align-items: center;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-color: rgba(0,0,0,0.5);
  z-index: 999;
}
.modal{
  position: fixed;
  top: 40%;
  left:15%;
  width: 70%;
  height: 20%;
  background-color: white;
  box-shadow: 0 0 5rpx darkgray;
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  align-items: center;
  border-radius: 30rpx;
  z-index: 1000;
}
.info{
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 10rpx
}
.title{
  font-weight: bold;
  white-space:pre-wrap;
  word-wrap:break-word;
  margin-bottom: 10rpx;
}
.content{
  white-space:pre-wrap;
  word-wrap:break-word;
}
.op-button{
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin-bottom: 10rpx;
}

.js

wx.openSetting需要通过点击按钮调用,不可直接调用。

// components/show-modal/show-modal.js
Component({

  /**
   * 组件的属性列表
   */
  properties: {
    show:{
      type:Boolean,
      value:false
    },
    title:{
      type:String,
      value:""
    },
    content:{
      type:String,
      value:""
    }
  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {
    cancel_and_close(){
      this.setData({
        show: false
      })
    },
    open_setting(){
      this.setData({
        show: false
      })
      wx.openSetting()
    }
  }
})

 在主体调用component:

.wxml

<show-modal show="{{show_auth}}" title="警告" content="未完成相册授权,无法保存到相册,请完成授权后继续。"></show-modal>

13595ebd9953450e99f82e028f1944f0.jpeg

 点击确认,打开settings让用户自行配置授权:

6bc22f17d80e4ceb89d07973da0d07ef.jpeg

更多微信小程序内容,欢迎关注、评论、私信博主。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1390578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义C#类库(.dll文件)

环境配置 操作系统&#xff1a;Windows 10 开发工具&#xff1a;Visual Studio 2022 .Net桌面开发环境&#xff1a; 开发步骤 &#xff08;一&#xff09;创建C#类库项目 &#xff08;二&#xff09;配置项目名称和项目路径 &#xff08;三&#xff09;选择所使用的框架&a…

群晖NAS上安装部署开源工作流自动化工具n8n

一、开源工作流自动化工具n8n简介 n8n是它是一个与其他应用集成的应用程序&#xff0c;目标是自动化各应用之间的流程;利用 n8n 你可以方便地实现当 A 条件发生&#xff0c;触发 B 服务这样的自动工作流程。 n8n优点是&#xff1a;代码开源、可以自托管、下载安装方便、易于使用…

快速入门Java NIO(Not I/O)的网络通信框架--Netty

Netty 入门 了解netty前需要对nio有一定认识,该笔记基础来自bilinbili黑马,在此基础上自己学习的笔记,添加了一些自己的理解 了解java 非阻塞io编程 1. 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework for rapid …

PLC绝对定位指令DDRVA往复运动(三菱FX系列简单状态机编程)

有关状态机的具体介绍,专栏有很多文章,大家可以通过下面的链接查看: https://rxxw-control.blog.csdn.net/article/details/125488089https://rxxw-control.blog.csdn.net/article/details/125488089三菱FX系列回原功能块介绍 https://rxxw-control.blog.csdn.net/article…

2024年【上海市安全员B证】模拟考试及上海市安全员B证复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 上海市安全员B证模拟考试是安全生产模拟考试一点通生成的&#xff0c;上海市安全员B证证模拟考试题库是根据上海市安全员B证最新版教材汇编出上海市安全员B证仿真模拟考试。2024年【上海市安全员B证】模拟考试及上海市…

网络安全(网络安全)—2024自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

TCP 的三次握手和四次挥手

Java 面试题 TCP 三次握手 第一次握手&#xff1a;客户端向服务端发送SYN包。报文中标志位SYN1&#xff0c;序列号seqx&#xff08;x为随机整数&#xff09;。此时客户端进入了 SYN_SEND 同步已发送状态。 第二次握手&#xff1a;服务端回复客户端SYNACK包。报文中标志位SYN1&…

Mantle: A Programmable Metadata Load Balancer for the Ceph File System——论文泛读

SC 2015 Paper 元数据论文阅读汇总 问题 优化Ceph的元数据局部性和负载平衡。 现有方法 提高元数据服务性能的最常见技术是在专用的元数据服务器&#xff08;MDS&#xff09;节点之间平衡负载 [16, 25, 26, 21, 28]。常见的方法是鼓励独立增长并减少通信&#xff0c;使用诸…

burp靶场——XXE注入

XML 外部实体 (XXE) 注入 1. 什么是xxe漏洞&#xff1a; https://portswigger.net/web-security/xxe#what-is-xml-external-entity-injection XML 外部实体注入&#xff08;也称为 XXE&#xff09;是一种 Web 安全漏洞&#xff0c;允许攻击者干扰应用程序对 XML 数据的处理。…

无监督去噪的一个变迁(1)——N2N→N2V→HQ-SSL

目录 1. 前沿2. N2N3. N2V——盲点网络&#xff08;BSNs&#xff0c;Blind Spot Networks&#xff09;开创者3.1. N2V实际是如何训练的&#xff1f; 4. HQ-SSL——认为N2V效率不够高4.1. HQ-SSL的理论架构4.1.1. 对卷积的改进4.1.2. 对下采样的改进4.1.3. 比N2V好在哪&#xff…

【Linux】权限详解

权限是什么呢&#xff1f; 通过一定条件&#xff0c;拦住一部分人&#xff0c;给另一部分人权利来访问某种资源 权限的本质&#xff1a; 权限与人有关&#xff1a;比如你要进你的学校是要看你是个人吗&#xff0c;重要的是看的是你是不是学校内学生&#xff0c;即你的角色 当然…

力扣精选算法100题——等于目标值的两个数or三数之和(双指针专题)

目录 &#x1f6a9;等于目标值的俩个数 第一步&#xff1a;了解题意 第二步&#xff1a;算法原理 第三步&#xff1a;代码实现 &#x1f6a9;三数之和 第一步&#xff1a;了解题意 第二步&#xff1a;算法原理 思路&#xff1a; ❗不漏&#xff1a; ❗去重: &#xf…

Midjourney Prompt基本结构

在 Midjourney 的官方介绍文档里&#xff0c;介绍了最简单的 Prompt 结构是这样的&#xff1a; 但我觉得上面那个 Prompt 过于简单了 &#x1f602; &#xff0c;反而 Advanced Prompt 更适合学习&#xff1a; Image Prompts&#xff08;选填&#xff09; Prompt 分成三个部分…

Spring Boot框架中Controller层API接口如何支持使用多个@RequestBody注解接受请求体参数

一、前言 众所周知&#xff0c;在Spring Boot框架中&#xff0c;Controller层API接口编码获取请求体参数时&#xff0c;在参数上会使用RequestBody注解&#xff1b;如果一次请求中&#xff0c;请求体参数携带的内容需要用多个参数接收时&#xff0c;能不能多次使用RequestBody…

游戏开发丨基于PyGlet的简易版Minecraft我的世界游戏

文章目录 写在前面我的世界PyGlet简介实验内容游戏按键程序设计引入文件 运行结果写在后面 写在前面 本期内容&#xff1a;基于PyGlet的简易版Minecraft我的世界游戏 实验环境&#xff1a; pycharmpyglet 项目下载地址&#xff1a;https://download.csdn.net/download/m0_6…

【CFP-专栏3】多领域SCI/EI快刊,1个月录用,12天见刊,1个月检索!

一、材料科学类SCI 【期刊概况】IF:3.0-4.0, JCR3区&#xff0c;中科院4区&#xff1b; 【大类学科】材料科学&#xff1b; 【检索情况】SCI在检&#xff1b; 【录用周期】2-3个月左右录用&#xff1b; 【接收领域】低温环境下新型生物降解材料的开发相关研究均可&#xf…

构建未来教育:在线培训系统开发的技术探讨

随着远程学习的崛起和数字化教育的普及&#xff0c;在线培训系统的开发成为了现代教育的核心。本文将深入讨论在线培训系统的关键技术要点&#xff0c;涵盖前后端开发、数据库管理、以及安全性和身份验证等关键方面。 前端开发&#xff1a;提供交互性与用户友好体验 在构建在…

力扣算法之滑动窗口题目--水果成篮

文章目录 题目解析不同之处解决办法解决图示 代码 题目解析 首先我们先看一下题目如下图所示 题目意思也比较容易理解其实就是你有一个篮子这个篮子只能装两个不同种类的水果&#xff0c;问你最多能装多少个水果&#xff0c;这里还贴心的弄了一个样列&#xff0c;121 可以看出…

C盘满了,我用什么思路清理?

20240115 上周六同事传了一个很大的虚拟机给我&#xff0c;C盘就红了 虽然是飞秋选错了存储文件的路径&#xff0c;但后来忘了&#xff0c;就开始毫无目的删除文件&#xff0c;过程中会有没有权限删除的&#xff0c;这样还是没有改善。 咨询了公司IT技术人员&#xff0c; 告…

如何100%防止网站数据被采集?七种方法保证数据安全

当今互联网时代&#xff0c;数据采集是常见的行为&#xff0c;但也常常引起一些法律纠纷或者商业竞争。因此&#xff0c;一些网站或者公司需要采取措施来防止自己的数据被别人采集。以下是一些防止数据采集的措施&#xff1a; 防止代理IP模拟搜索引擎抓爬&#xff1a;使用代理I…