微信小程序的图片色彩分析,窃取网络图片的主色调

1、安装 Mini App Color Thief 包 

包括下载包,简单使用都有,之前写了,这里就不写了

网址:微信小程序的图片色彩分析,窃取主色调,调色板-CSDN博客

2、 问题和解决方案

  • 问题:由于我们的窃取图片的是需要画布的,我需要使用网络图片去用画布时,微信小程序会报错,最后发现,需要本地图片才行,用网络图片会出问题
  • 解决方案:我们使用wx.downloadFile去下载该图片,然后获取临时路径去使用画布和Mini App Color Thief 包 窃取图片颜色,防止图片重复下载的话,我们去用微信小程序中的另一个api,FileSystemManager.access(Object object)去判断临时文件是否存在

 3、配置downloadFile.js文件【放置在utils文件夹下】

export default (url, path = "") => {return new Promise((resolve, reject) => {const fs = wx.getFileSystemManager()// 判断文件/目录是否存在fs.access({path,success(res) {// 文件存在,复用console.log(res)resolve(path)},fail(res) {// 文件不存在或其他错误,下载为临时文件console.log(res)wx.downloadFile({url,success(res) {if (res.statusCode === 200) {resolve(res.tempFilePath)wx.setStorageSync('bgcUrl', res.tempFilePath)}},fail: (err) => {reject(err)}})}})})
}

4、获取图片临时路径,开始窃取

注意:wxml中需要放置

<canvas canvas-id="myCanvas" />
import downloadFile from '../../utils/downloadFile'Page({data: {palette: "",// 用户信息userInfo: {},},// 判断是否有背景图片的缓存文件,没有就下载为临时文件,最后绘画出来async bgcDownload() {let bgcUrl = wx.getStorageSync('bgcUrl')let result = await downloadFile(this.data.userInfo.backgroundUrl, bgcUrl)console.log(result);const ctx = wx.createCanvasContext('myCanvas')ctx.drawImage(result, 0, 0, 100, 100);ctx.draw(false, () => {wx.canvasGetImageData({canvasId: "myCanvas",x: 0,y: 0,width: 100,height: 100,success: res => {let palette = colorThief(res.data).color().getHex();this.setData({ palette })}});})},onReady: function () {this.bgcDownload()},
})

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

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

相关文章

基于Langchain-Chatchat + chatGLM3 轻松在本地部署一个知识库

前面三篇分别讲解了如何在本地环境部署大模型&#xff0c;那么今天简单的通过 Langchain-Chatchat 和 chatGLM3结合在本地环境搭建一套属于自己的大模型知识库。 往期llm系列文章 基于MacBook Pro M1芯片运行chatglm2-6b大模型如何在本地部署chatGLM3基于ChatGLM.cpp实现低成…

论文阅读-通过云特征增强的深度学习预测云工作负载转折点

论文名称&#xff1a;Cloud Workload Turning Points Prediction via Cloud Feature-Enhanced Deep Learning 摘要 云工作负载转折点要么是代表工作负载压力的局部峰值点&#xff0c;要么是代表资源浪费的局部谷值点。预测这些关键点对于向系统管理者发出警告、采取预防措施以…

企业动态 | UFAPKU“金融科技”沙龙走进同创永益——前沿技术在金融科技领域的应用

金融科技作为金融发展的驱动力量&#xff0c;对金融行业有着深远的影响。金融行业通过技术创新和数字化转型&#xff0c;极大地提高了金融服务和产品的效率和便捷性。1月21日&#xff0c;UFAPKU“金融科技”第二期沙龙在北大校友企业同创永益北京总部举办&#xff0c;数十位来自…

python增量同步文件夹中的文件

要增量同步文件夹中的文件&#xff0c;可以使用Python的shutil模块。以下是一个示例代码&#xff0c;它可以将源文件夹中的新增文件复制到目标文件夹中&#xff0c;并保留文件的时间戳和访问权限。 import os import shutil import time# 源文件夹和目标文件夹的路径 src_dir …

请问CTF是什么?请介绍一下关于隐水印的知识特点技术原理应用领域技术挑战

目录 请问CTF是什么&#xff1f; 请介绍一下关于隐水印的知识 特点 技术原理 应用领域 技术挑战 请问CTF是什么&#xff1f; CTF&#xff08;Capture The Flag&#xff0c;夺旗比赛&#xff09;是一种信息安全竞赛&#xff0c;常见于计算机安全领域。这种比赛模拟各种信…

fastjson 导致的OOM

fastjson 导致的OOM 示例代码 public static void main(String[] args) throws Exception {try {List<Integer> list JSONObject.parseArray("[2023,2024", Integer.class);}catch (Exception e){System.err.println("error");}System.out.println…

一文搞懂 springboot 如何融合数据源

1、简介 springboot 支持关系型数据库的相关组件进行配置&#xff0c;包括数据源、连接池、事务管理器等的自动配置。降低了数据库使用的难度&#xff0c;除了 mysql 还支持 Derby、H2等嵌入式数据库的自动配置&#xff0c;MongoDB、Redis、elasticsearch等常用的 NoSQL 的数据…

BGP邻居故障检测

第一种情况:如果AR2和AR4采用直连建立邻居,则排查步骤如下: 1)在AR2和AR4上使用ping x.x.x.x命令检查AR2和AR4用于建立EBGP邻居关系的直连地址连通性是否正常。如果不能ping通。则需要使用二分法从网络层向下层逐层进行排查,首先检查接口地址及路由的可达性,修改完成后,如…

Codeforces Round 914 (Div. 2)(D1/D2)--ST表

Codeforces Round 914 (Div. 2)(D1/D2)–ST表 D1. Set To Max (Easy Version) 题意&#xff1a; 给出长度为n的数组a和b&#xff0c;可以对a进行任意次数操作&#xff0c;操作方式为选择任意区间将区间内值全部变成该区间的最大值&#xff0c; 是否有可能使得数组a等于数组b…

WEB3:互联网发展的新时代

随着科技的飞速发展&#xff0c;互联网已从最初的信息交流平台发展为涵盖了工作、生活、娱乐、教育等众多领域的复杂系统。我们将其称之为“WEB3”&#xff0c;这个名称是对互联网新时代的高度概括&#xff0c;标志着我们已经迈入了WEB3时代。 在WEB3时代&#xff0c;互联网将…

MySQL 函数触发隐式转换应对策略

文章目录 前言1. 环境介绍2. MySQL 5.72.1 执行计划2.2 虚拟列优化2.3 原理解析 3. MySQL 8.03.1 执行计划3.2 函数索引优化3.3 原理解析 前言 MySQL 中&#xff0c;当 SQL 索引字段使用了函数的话&#xff0c;会出现隐式转换的问题&#xff0c;导致索引失效&#xff0c;从而导…

C# CAD界面-自定义窗体(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

《短链接--阿丹》--技术选型与架构分析

整个短链接专栏会持续更新。有兴趣的可以关注一下我的这个专栏。 《短链接--搭建解析》--立项+需求分析文档-CSDN博客 阿丹: 其实整套项目中的重点,根据上面的简单需求分析来看,整体的项目难题有两点。 1、快速的批量生成短链,并找到对应的存储。 并且要保持唯一性质。…

深入探索MySQL的虚拟列:发展、原理与应用

当我们谈论数据库优化时&#xff0c;经常会遇到各种技术和策略。其中&#xff0c;MySQL的虚拟列&#xff08;也被称为生成列或存储列&#xff09;是一个引人注目的特性。它不仅可以帮助开发者提高查询效率&#xff0c;还能为数据表提供额外的计算功能&#xff0c;而无需真正改变…

【Linux驱动】块设备驱动(二)—— 块设备读写(使用请求队列)

块设备的操作函数并没有类似于字符驱动中的read 和write函数&#xff0c;要实现读写操作&#xff0c;只能在请求处理函数中实现。这就分为两种&#xff0c;是否要使用请求队列&#xff0c;请求队列的主要作用是管理和调度IO请求。在以下情况中&#xff0c;一般需要用到请求队队…

跑路页面HTML源码

简单的HTMLJSCSS&#xff0c;记事本修改内容&#xff0c;喜欢的朋友可以下载 https://download.csdn.net/download/huayula/88811984

vivado RTL综合中的多线程

RTL综合中的多线程 在多处理器系统上&#xff0c;RTL合成默认情况下利用多个CPU核心&#xff08;最多四个&#xff09;来加快编译时间。同时运行的线程的最大数量会有所不同&#xff0c;具体取决于处理器的数量可在系统、操作系统和流程阶段使用&#xff08;请参阅Vivado Desi…

Thinkpad E550 安装 Ubuntu

参考&#xff1a;使用U盘安装Ubuntu20.04 Thinkpad E550 使用 enterf1进入 bios&#xff0c; 使用 f12 进入 boot 选项。不知道这个和系统有啥关系&#xff0c;感觉之前不是这样。。。 下载镜像 下载镜像 22.04 可以下载相应的 torrent 文件&#xff0c;然后用 百度网盘或者…

HTTP1.1、HTTP2、HTTP3

HTTP1.1 HTTP/1.1 相比 HTTP/1.0 性能上的改进&#xff1a; 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。支持管道&#xff08;pipeline&#xff09;网络传输&#xff0c;只要第一个请求发出去了&#xff0c;不必等其回来&#xff0c;就可以发第二个请求出去&…

Linux基础-磁盘分区

1.Linux磁盘分区方案 1.根分区/ 2./boot 3./var/log 4.swap虚拟交换分区&#xff0c;当物理内存不够用&#xff0c;需要用swap 5.自定义分区&#xff1a; ①创建一个目录/etc/mysql装mysql数据库软件 ②再创建一个目录/backup存放mysql数据库备份文件 2.磁盘分区划分 第一个…