当前位置: 首页 > news >正文

【uniapp-小程序-分享图5/4】

utils.js

//裁剪分享的图片为5:4
const makeCanvas = (imgUrl) => {console.log("imgUrl",imgUrl);return new Promise((resolve, reject) => {// 获取图片信息,小程序下获取网络图片信息需先配置download域名白名单才能生效uni.getImageInfo({src: imgUrl,success: (imgInfo) => {let ctx = uni.createCanvasContext('canvas')let canvasW = 0let canvasH = imgInfo.height// 把比例设置为 宽比高 5:4canvasW = (imgInfo.height * 5) / 4// 为画框设置背景色,注意要放在画图前,图会覆盖在背景色上ctx.fillStyle = "#fff";if (imgInfo.width > 400 || imgInfo.height > 320) {canvasW = 400;canvasH = 320;ctx.fillRect(0, 0, canvasW, canvasH);let dWidth = canvasW / imgInfo.width; // canvas与图片的宽度比例let dHeight = canvasH / imgInfo.height; // canvas与图片的高度比例let dWH = imgInfo.width / imgInfo.height; //宽高比if (imgInfo.width > canvasW && imgInfo.height > canvasH) {if (dWH > 1 && dWH < 1.5) {ctx.drawImage(imgInfo.path, (canvasW - imgInfo.width * dHeight) / 2,0, imgInfo.width * dHeight, imgInfo.height *dHeight)} else {if (imgInfo.width > imgInfo.height) {ctx.drawImage(imgInfo.path, 0, (canvasH - imgInfo.height *dWidth) / 2, imgInfo.width * dWidth,imgInfo.height *dWidth)}if (imgInfo.width == imgInfo.height) {ctx.drawImage(imgInfo.path, (canvasW - imgInfo.width *dHeight) / 2, 0, imgInfo.width * dHeight,imgInfo.height * dHeight)}if (imgInfo.width < imgInfo.height) {ctx.drawImage(imgInfo.path, (canvasW - imgInfo.width *dHeight) / 2, 0, imgInfo.width * dHeight,imgInfo.height * dHeight)}}} else {if (imgInfo.width > imgInfo.height) {ctx.drawImage(imgInfo.path, 0, (canvasH - imgInfo.height) / 2,imgInfo.width * dWidth, imgInfo.height)}if (imgInfo.width == imgInfo.height) {ctx.drawImage(imgInfo.path, (canvasW - imgInfo.width * dHeight) / 2,0, imgInfo.width * dHeight, imgInfo.height *dHeight)}if (imgInfo.width < imgInfo.height) {ctx.drawImage(imgInfo.path, (canvasW - imgInfo.width * dHeight) / 2,0, imgInfo.width * dHeight, imgInfo.height *dHeight)}}} else {ctx.fillRect(0, 0, canvasW, canvasH)ctx.drawImage(imgInfo.path,0,0,canvasW,canvasH,(canvasW - imgInfo.width) / 2, // 宽度从中间向两边填充0,canvasW,canvasH)}ctx.draw(false, () => {uni.canvasToTempFilePath({width: canvasW,height: canvasH,destWidth: 750, // 标准的iphone6尺寸的两倍,生成高清图destHeight: 600,canvasId: "canvas",fileType: "jpg", // 注意jpg默认背景为透明success: (res) => {console.log("res.tempFilePath",res.tempFilePath);resolve(res.tempFilePath)},fail: (err) => {console.log("err",err);reject(err)}},this)})},fail: (err) => {reject(err)}})})
}
module.exports = {makeCanvas
}

用的页面

import util from '@/common/js/util.js';
//分享到聊天onShareAppMessage() {return new Promise((resolve, reject) => {let shareMessage = {title: this.liveInfo.wx_title,path: '/subPages/livePages/liveCourse/live_course_info?courseid=' +this.courseid,imageUrl: this.liveInfo.wx_thumb || this.liveInfo.thumb};util.makeCanvas(shareMessage.imageUrl).then(imgPath => {console.log(imgPathm,'imgPath')// uni.hideLoading();resolve({title: shareMessage.title,path: shareMessage.path,imageUrl: imgPath});}).catch(err => {// uni.hideLoading();resolve(shareMessage);});})},

相关文章:

【uniapp-小程序-分享图5/4】

utils.js //裁剪分享的图片为5:4 const makeCanvas (imgUrl) > {console.log("imgUrl",imgUrl);return new Promise((resolve, reject) > {// 获取图片信息,小程序下获取网络图片信息需先配置download域名白名单才能生效uni.getImageInfo({src: imgUrl,succe…...

【响应式编程】前置知识和相关技术的总结

前置知识 这些概念都与响应式编程密切相关。&#x1f98c; 1. 并发和多线程编程&#xff1a;响应式编程需要处理并发性&#xff0c;它允许多个操作独立地并行执行。这使得应用程序可以在不同的线程、进程或设备上处理多个事件。 2. 事件驱动编程&#xff1a;响应式编程是一种…...

K8S--安装MySQL8(单机)

原文网址&#xff1a;K8S--安装MySQL8&#xff08;单机&#xff09;-CSDN博客 简介 本文介绍K8S部署MySQL8&#xff08;单机&#xff09;的方法。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题…...

CMake+QT+大漠插件的桌面应用开发

文章目录 CMakeQT大漠插件的桌面应用开发说明环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发 说明 在CMake大漠插件的应用开发——处理dm.dll&#xff0c;免注册调用大漠插件中已经说明了如何免注册调用大漠插件&#xff0c;以及做了几个简单的功能调用&#x…...

OpenCV-24双边滤波

一、概念 双边滤波对于图像的边缘信息能够更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。 空间距离&#xff1a;指的是当前点与中心点的欧式距离。空间域的高斯函数及其数学形式为&#xff1a; 其中&#xff08;xi&#xff0c;yi&…...

AI智能分析网关V4:太阳能+4G智慧水库远程可视化智能监管方案

一、背景需求分析 由于水库位置分散的原因&#xff0c;水库视频监控建设在立杆、布线等方面都存在一定的难度&#xff0c;且需要人力、物力的前期投入和后期维护。目前水库的监管存在一定的问题&#xff0c;管理人员工作强度大但管理质量并不高&#xff0c;人为巡检无法实时发…...

第8章-第8节-Java中的文件类File的简单介绍

1、我们已经写过File的相关代码&#xff1a; BufferedReader bf new BufferedReader(new FileReader(new File("aa.txt"))); 2、其实FIle这个类自身也是非常强大的&#xff0c;封装了很多操作文件/目录的方法&#xff0c;今天我们就需要去详细的学习这个类&#x…...

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】

文章目录 沙箱逃脱prtcl题HITCON CTF 2017 Quals Impeccable Artifact libc 2.24flag文件对应prctl函数检查源码思路exp 沙箱逃脱prtcl题 HITCON CTF 2017 Quals Impeccable Artifact libc 2.24 flag文件 此时的flag文件在本文件夹建一个即可 此时的我设置的flag为 对应prc…...

【Docker篇】使用Docker操作镜像

文章目录 &#x1f6f8;镜像&#x1f33a;基本操作⭐docker --help⭐docker pull [ 参数 ]⭐docker images⭐docker save -- 导出⭐docker rmi -- 删除⭐docker load -- 导入 &#x1f6f8;镜像 镜像是指在计算机领域中&#xff0c;通过复制和创建一个与原始对象相似的副本的过…...

css宽度适应内容

废话不多说,看如下demo,我需要将下面这个盒子的宽度变成内容自适应 方法有很多,如下 父元素设置display:flex 实现子元素宽度适应内容 如下给父元素设置flex能实现宽度自适应内容 <!DOCTYPE html><html lang"en"><head><meta charset"U…...

粒子物理和原子核物理的理论在模拟和分析电路中的粒子束和辐射效应中的应用

粒子物理和原子核物理的理论可以应用于模拟和分析电路中的粒子束和辐射效应&#xff0c;特别是在粒子加速器和辐射探测器的设计和优化方面。通过这些理论的应用&#xff0c;可以提高加速器和探测器的性能&#xff0c;推动粒子物理和原子核物理的研究进展。粒子物理和原子核物理…...

Opentsdb官方优化文档 - 翻译

文档地址 : Tuning — OpenTSDB 2.4 documentation Tuning As with any database there are many tuning parameters for OpenTSDB that can be used to improve write and read performance. Some of these options are specific to certain backends, others are global. …...

JavaScript深拷贝与浅拷贝的全面解析

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ 目录 ✨ 前言 ✨ 正文 浅拷贝 对象的浅拷贝 数组的浅拷贝 浅拷贝的问题 深拷贝 什么是深拷贝…...

ESU毅速丨制造企业需不需要建设增材制造中心?

随着科技的不断发展&#xff0c;增材制造技术已经成为制造行业的新宠。越来越多的企业开始考虑建设增材制造中心&#xff0c;以提高生产效率、降低成本、加速产品创新。但是&#xff0c;对于制造企业来说&#xff0c;是否需要建设增材制造中心呢&#xff1f; 首先&#xff0c;我…...

Linux shell编程学习笔记39:df命令

0 前言1 df命令的功能、格式和选项说明 1.1 df命令的功能1.2 df命令的格式1.3 df命令选项说明 2 df命令使用实例 2.1 df&#xff1a;显示主要文件系统信息2.2 df -a&#xff1a;显示所有文件系统信息2.3 df -t[]TYPE或--type[]TYPE&#xff1a;显示TYPE指定类型的文件系统信…...

简单高效 LaTeX 科学排版 第004集 命令与环境

这是《简单高效LaTeX》的第四个视频&#xff0c;主要演示讨论基本命令与排版环境&#xff0c;还有保留字符。 视频地址&#xff1a;https://www.ixigua.com/7298100920137548288?id7298102807985390120&logTagf853f23a668f8a2ee405...

初识XSS漏洞

目录 一、XSS的原理和分类 二、Xss漏洞分类 1. 反射性xss 简单的演示&#xff1a; 2.基于DOM的XSS 简单的演示&#xff1a; 3.存储型XSS ​编辑简单的演示 4、self xss 三、XSS漏洞的危害 四、XSS漏洞的验证 五、XSS漏洞的黑盒测试 六、XSS漏洞的白盒测试 七、XS…...

白嫖aws创建Joplin server服务器

网上有很多的Joplin服务器的搭建教程&#xff0c;但是基本都是抄来抄去&#xff0c;对初学者实在是太不友好了。 话不多说&#xff0c;说干就干&#xff0c;自己从头找资料搭了一个&#xff0c;这可能是全网最好的Joplin服务器搭建教程了。 aws服务器 aws的服务器还是很香的&…...

metartc5_jz源码阅读-p2p通过stun服务器进行通信

1. YangIpc.c/yang_create_ipc 需要设置stun服务器的ip地址和端口号 设置iceCandidateType为2&#xff0c;表示走stun&#xff0c;即向stun服务器发起请求获取本机的公网ip地址。 //设置iceServerIP和端口号&#xff0c;设置iceCandidate类型。 strcpy(session->avinfo.rtc…...

总结:Java程序员读书清单顺序

总结&#xff1a;Java程序员读书清单顺序&#xff0c;持续更新中。。。。。。 一经验提示&#xff1a;1.零基础不建议直接看计算机专业书籍&#xff0c;建议先去看视频教程2.本书单目录用作自学顺序记录&#xff0c;也适用于有Java开发基础的同志3.看计算机书籍可以完善自己的技…...

Go语言错误重试机制深度解析:openclaw-nerve库实战指南

1. 项目概述与核心价值最近在折腾一些自动化脚本和数据处理任务时&#xff0c;我遇到了一个老生常谈但又极其棘手的问题&#xff1a;如何让一个程序稳定、可靠地运行&#xff0c;尤其是在处理网络请求、文件I/O或者调用外部API时&#xff0c;那些不可预知的超时、连接中断、资源…...

PHP使用Intervention Image图像处理

在 Web 开发中&#xff0c;图像处理是常见需求&#xff1a;缩略图生成、水印添加、格式转换……但原生 PHP 的 GD 库 API 复杂且易出错。本文将提供Intervention ImagePHP 图像处理库从安装到高级用法的完整实战指南&#xff0c;它能用极简代码完成复杂的图像操作。 目录 安装…...

Lumberjack 暗色主题:提升开发效率的配色方案与多平台配置指南

1. 项目概述&#xff1a;一个为开发者打造的暗色系主题 如果你和我一样&#xff0c;每天有超过一半的时间都泡在代码编辑器里&#xff0c;那么一个顺眼的主题就不仅仅是“好看”而已&#xff0c;它直接关系到你的工作效率和眼睛的舒适度。今天要聊的这个项目&#xff0c; Drru…...

PHP文件上传绕过新思路:用.htaccess+GIF89a头绕过exif_imagetype检测的完整操作指南

突破文件上传限制的进阶技巧&#xff1a;.htaccess与GIF89a的协同利用 在Web应用安全领域&#xff0c;文件上传功能一直是攻防对抗的前沿阵地。当开发者采用exif_imagetype()等函数验证文件类型时&#xff0c;攻击者往往会寻找更隐蔽的绕过方式。本文将深入剖析如何通过.htacce…...

从一次内存拷贝崩溃说起:手把手教你用memcpy_s重构老旧C代码

从内存越界崩溃到安全重构&#xff1a;实战memcpy_s迁移指南 调试器突然停止在memcpy调用处&#xff0c;控制台抛出"Segmentation fault"的那一刻&#xff0c;每个C语言开发者都会心头一紧。这种由内存越界引发的崩溃在遗留代码库中尤为常见&#xff0c;就像我去年接…...

程序员转智能体开发,到底有没有门槛?这篇给你最真实的答案

文章目录前言一、为什么所有人都在说“智能体开发零门槛”&#xff1f;1. 开源框架把难度降到了地板上2. 大模型的能力已经足够强大3. 海量的教程和社区资源二、智能体开发的真实门槛&#xff0c;到底卡在哪里&#xff1f;1. 认知门槛&#xff1a;你以为智能体是“大模型插件”…...

音乐网站与分享平台 |基于Springboot+vue的音乐网站与分享平台(源码+数据库+文档)​

音乐网站与分享平台 目录 基于Springbootvue的音乐网站与分享平台 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xf…...

高速数字设计中的抖动:从概念到测量与抑制的完整指南

1. 项目概述&#xff1a;从“抖动”说起&#xff0c;高速数字设计的隐形杀手如果你在高速数字电路设计或者信号完整性测试领域摸爬滚打过几年&#xff0c;那么“抖动”这个词对你来说&#xff0c;绝对不是一个陌生的概念。它就像电路板上的幽灵&#xff0c;平时看不见摸不着&am…...

字节跳动多举措重塑短剧行业:15亿扶持、分账透明,出海与收缩并行

恐慌的来源&#xff0c;以及字节的导向今年年初&#xff0c;“红果取消保底”消息在从业者圈子发酵&#xff0c;“短剧演员无戏可拍”话题登上微博热搜&#xff0c;阅读量破亿&#xff0c;行业恐慌蔓延。恐慌源于两方面&#xff1a;一是红果从2026年1月起收缩普惠保底&#xff…...

从丰田SUA事件看安全关键系统软件可靠性:设计原则与工程实践

1. 项目概述&#xff1a;当软件缺陷成为致命威胁我干了十多年嵌入式开发&#xff0c;从单片机玩到复杂的汽车域控制器&#xff0c;经手的代码行数自己都数不清了。但每次看到“软件缺陷导致车辆突然加速”这类新闻&#xff0c;后背还是会发凉。这行干久了&#xff0c;你会对代码…...