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

关键步骤介绍

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>

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

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

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

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

相关文章

多级缓存架构(二)Caffeine进程缓存

文章目录 一、引入依赖二、实现进程缓存1. 配置Config类2. 修改controller 三、运行四、测试 通过本文章&#xff0c;可以完成多级缓存架构中的进程缓存。 一、引入依赖 在item-service中引入caffeine依赖 <dependency><groupId>com.github.ben-manes.caffeine…

设计师们必备的神秘利器!这款设计工具不容忽视!

「即时设计」与Figma类似&#xff0c;它是一种云设计工具&#xff0c;可以与多人实时合作&#xff0c;从设计到评估、交付、团队合作和版本管理。 作为一种国内工具&#xff0c;起初我们对它不是很乐观&#xff0c;但不得不说&#xff0c;经过深入使用&#xff0c;无论是迭代速…

智能反射面—流形优化

使用Manopt工具箱适合优化最小化问题&#xff0c;如果你的优化问题是最大化问题&#xff0c;那么需要将其转换为最小化问题然后使用Manopt工具箱求解。 具体安装过程 Matlab添加Manopt - 知乎 (zhihu.com) 优化问题 clc,clear; close all; srng(1);%rand seed N10; GR_num1e3…

【RT-DETR改进涨点】MPDIoU、InnerMPDIoU损失函数中的No.1(包含二次创新)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

用AI大模型破局,e签宝、上上签、法大大急寻“长胜密码”

AI大模型正在造福各行各业&#xff0c;电子签名行业也在升级改造行列。e签宝、法大大、上上签等企业的“指路人”&#xff0c;无一不肯定AI大模型对于电子签名行业的重要性&#xff0c;电子签企业拥抱AI大模型的动作也越来越明显。 法大大创始人兼CEO黄翔说&#xff1a;“在新…

Resize:最近邻插值、双线性插值、双三次插值

Resize&#xff1a;最近邻插值、双线性插值、双三次插值 Opencv resize函数1. 最近邻插值&#xff08;INTER_NEAREST&#xff09;1.1 原理1.2 代码实例1.3 简单的代码复现1.4 特点 2. 双线性插值&#xff08;INTER_LINEAR&#xff09;&#xff08;默认值&#xff09;2.1 原理2.…

Redis教程——Redis string 字符串

Redis 是一款开源的高性能键值对存储数据库&#xff0c;支持多种数据结构&#xff0c;其中之一是字符串&#xff08;String&#xff09;。在 Redis 中&#xff0c;字符串是二进制安全的&#xff0c;这意味着字符串可以包含任意数据&#xff0c;包括图片、音频、视频等。 Redis…

【C++练级之路】【Lv.6】【STL】string类的模拟实现

文章目录 引言一、成员变量二、默认成员函数2.1 constructor2.2 copy constructor2.3 destructor2.4 operator 三、迭代器3.1 begin3.2 end 四、元素访问4.1 operator[ ] 五、容量5.1 size5.2 capacity5.3 reserve5.4 resize 六、修改6.1 push_back6.2 append6.3 operator6.4 i…

spring boot学习第八篇:通过spring boot、jedis实现秒单

参考&#xff1a;Redis实现分布式锁的7种方案 - 知乎 1、 准备数据库表&#xff0c;如下SQL表示库存表&#xff0c;有主键ID和库存数量字段 CREATE TABLE t_stock (id bigint(20) NOT NULL AUTO_INCREMENT,quantity bigint(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEF…

2023年全球软件开发大会(QCon北京站2023)9月:核心内容与学习收获(附大会核心PPT下载)

随着科技的飞速发展&#xff0c;全球软件开发大会&#xff08;QCon&#xff09;作为行业领先的技术盛会&#xff0c;为世界各地的专业人士提供了交流与学习的平台。本次大会汇集了全球的软件开发者、架构师、项目经理等&#xff0c;共同探讨软件开发的最新趋势、技术与实践。本…

ChatGPT与文心一言:两大AI助手智能回复、语言准确性、知识库丰富度比较

ChatGPT与文心一言&#xff1a;两大AI助手智能回复、语言准确性、知识库丰富度比较 在现代科技飞速发展的时代&#xff0c;人工智能已经成为了我们生活中不可或缺的一部分。特别是在对话AI领域&#xff0c;两大巨头ChatGPT和文心一言以其出色的性能和广泛的应用引起了大家的广…

Agent Attention:Softmax与线性注意力的融合研究

摘要 https://arxiv.org/pdf/2312.08874.pdf 在Transformer中,注意力模块是其关键组件。虽然全局注意力机制提供了高度的表达能力,但其过高的计算成本限制了其在各种场景下的应用。本文提出了一种新颖的注意力范式,称为Agent Attention,以在计算效率和表示能力之间取得良好…

返利机器人的前景分析

返利机器人的前景分析 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我将为你揭示返利机器人在2024年的赚钱前景。 一、返利机器人的发展历程 返…

20240116金融读报1分钟小得

真是羊毛逮着一个薅。银发贷款&#xff0c;助力适老企业腾飞&#xff0c;提前买股新蓝海 强化对科技创新、先进制造、绿色发展等重点领域的精准支持&#xff0c;引导资金更多流向民营小微、乡村振兴等环节 提升科技型企业“首贷率”&#xff0c;这会不会是今年银行人的kpi&…

提供多语种客户服务的正确方法:让你更接近全球客户

优质的客户支持是任何成功企业的核心。每位客户都希望得到全天候的及时响应。事实上&#xff0c;根据《哈佛商业评论》的研究报告&#xff0c;快速响应会促使人们在未来支付更多的费用。此外&#xff0c;在与全球客户打交道时&#xff0c;您的沟通必须超越语言障碍。用客户的语…

Java Chassis 3技术解密:注册中心分区隔离

原文链接&#xff1a;Java Chassis 3技术解密&#xff1a;注册中心分区隔离-云社区-华为云 注册中心负责实例的注册和发现&#xff0c;对微服务可靠运行起到举足轻重的作用。实例变更感知周期是注册中心最重要的技术指标之一。感知周期代表提供者的实例注册或者下线后&#xf…

2024 CKA 题库 | 10、创建 PV

不等更新题库 文章目录 10、创建 PV题目:考点&#xff1a;参考链接:解答:更换 context创建 pv yaml创建 pv 检查 10、创建 PV 题目: 设置配置环境&#xff1a; [candidatenode-1] $ kubectl config use-context hk8sTask 创建名为 app-config 的 persistent volume&#xff0…

Java后端sql编写

Java后端sql编写 注意事项二级目录三级目录 注意事项 在后端编写sql&#xff0c;不要直接编写sql语句进行查询 比如直接在service实现类中写下图这种语句 二级目录 三级目录

Python文本向量化入门(三):查看默认词袋

在文本分析和自然语言处理中&#xff0c;将文本数据转换为数值型格式是至关重要的第一步。这有助于我们利用机器学习算法进行更高效的数据分析。Scikit-learn库中的CountVectorizer类是一个非常有用的工具&#xff0c;它可以将文本数据转换为词频矩阵。 首先&#xff0c;我们需…

QT 类介绍

1. QThread类 QThread类是Qt中的线程类&#xff0c;用于创建和管理线程。使用QThread类可以方便地创建和管理线程&#xff0c;并可以在不同的线程之间进行通信和同步。 2. QRunnable类 QRunnable类是Qt中的可执行类&#xff0c;用于定义需要在线程中执行的任务。使用QRunnable类…