深入探索微信小程序:图像处理与优雅预览的艺术

深入探索微信小程序:图像处理与优雅预览的艺术

      • 微信小程序中的图片基础
      • 一、图片上传与压缩
      • 二、图片预览技巧
      • 三、图片处理进阶:Canvas与滤镜
      • 四、性能优化与最佳实践
      • 参考资料

微信小程序中的图片基础

  • 图片资源存储:本地资源与网络资源的使用区别。
  • image组件:基础用法与属性详解,如srcmode属性调整图片展示模式。

一、图片上传与压缩

  • wx.chooseImage:选择图片的API使用示例。
  • wx.compressImage:图片压缩的重要性与实现方法。
  • 代码示例:
chooseAndCompressImage() {wx.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: (res) => {const tempFilePaths = res.tempFilePaths;wx.compressImage({src: tempFilePaths[0], // 图片路径quality: 80, // 压缩质量success: (res) => {console.log('图片压缩成功', res.tempFilePath);this.uploadImage(res.tempFilePath); // 压缩后上传},fail: (err) => {console.error('图片压缩失败', err);}});},fail: (err) => {console.error('选择图片失败', err);}});
}

二、图片预览技巧

  • wx.previewImage:基础预览功能介绍与API参数说明。
  • 自定义预览界面:使用<image>配合bindtap实现简易预览功能。
  • 高级预览技巧:结合swiper组件实现轮播预览、手势缩放等。
  • 代码示例:
<!-- 在wxml中 -->
<view wx:for="{{imageUrls}}" wx:key="*this"><image src="{{item}}" bindtap="previewImage" mode="aspectFit"/>
</view><!-- 在js中 -->
previewImage(e) {const current = e.currentTarget.dataset.src;wx.previewImage({urls: this.imageUrls, // 需要预览的图片http链接列表current, // 当前显示图片的http链接});
}

三、图片处理进阶:Canvas与滤镜

  • Canvas API:绘制、裁剪、合成图片的基础与示例。
  • 滤镜应用:使用style.filter实现简单图片效果。
  • 代码示例:使用Canvas裁剪圆形头像
drawCircleAvatar() {const ctx = wx.createCanvasContext('myCanvas');ctx.beginPath();ctx.arc(50, 50, 50, 0, Math.PI * 2, true);ctx.clip();ctx.drawImage(this.data.avatarUrl, 0, 0, 100, 100);ctx.draw();
}

四、性能优化与最佳实践

  • 懒加载:结合Intersection Observer API或scroll-view的bindscroll事件实现。
  • 图片缓存策略:使用wx.getImageInfo缓存策略减少请求。
  • 适配多种屏幕尺寸:利用rpx单位与image组件的mode属性。

参考资料

  • 微信开放文档:微信小程序开发指南
  • 微信开发者社区:图片处理相关讨论

💝💝💝
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。


推荐:DTcode7的博客首页。
一个做过前端开发的产品经理🧑,经历过睿智产品的折磨导致脱发之后👴,励志要翻身"农奴"把歌唱,一边打入敌人内部👮‍♂️一边持续提升自己👨‍🎓,为我们广大开发同胞谋福祉🎉,坚决抵制睿智产品折磨我们码农兄弟!💪


【专栏导航】

  • 《微信小程序相关博客》:结合微信官方原生框架、uniapp等小程序框架,记录请求、封装、tabbar、UI组件的学习记录和使用技巧等
  • 《Vue相关博客》:详细总结了常用UI库elementUI的使用技巧以及Vue的学习之旅。
  • 《前端开发习惯与小技巧相关博客》:罗列常用的开发工具使用技巧,如 Vscode快捷键操作、Git、CMD、游览器控制台等
  • 《AIGC相关博客》:AIGC、AI生产力工具的介绍,例如stable diffusion这种的AI绘画工具安装、使用、技巧等总结
  • 《photoshop相关博客》:基础的PS学习记录,含括PPI与DPI、物理像素dp、逻辑像素dip、矢量图和位图以及帧动画等的学习总结
  • 《IT信息技术相关博客》:作为信息化人员所需要掌握的底层技术,涉及软件开发、网络建设、系统维护等领域
  • 《日常开发&办公&生产【实用工具】分享相关博客》:分享介绍各种开发中、工作中、个人生产以及学习上的工具,丰富阅历,给大家提供处理事情的更多角度,学习了解更多的便利工具,如Fiddler抓包、办公快捷键、虚拟机VMware等工具。

🙈吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤 🙈
😚非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!🕍
💝💝💝

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

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

相关文章

Linux系统下设置命令的别名

给常用Docker命令起别名&#xff0c;方便我们访问&#xff1a; 第一步&#xff1a;修改/root/.bashrc文件 vi /root/.bashrc第二版&#xff1a;添加别名 # .bashrc # User specific aliases and functionsalias rmrm -i alias cpcp -i alias mvmv -i alias dpsdocker ps --f…

sql数据库——增删改

1.插入 insert into <表><字段1&#xff0c;字段2&#xff0c;字段3> values<值1&#xff0c;值2&#xff0c;值3> 2.更新/修改 update <表名> set 修改字段1值1&#xff0c;修改字段2值2&#xff0c;修改字段3值3&#xff0c; 3.删除 delete …

商务分析方法与工具(一):Python的趣味快捷-运算符、表达式与内置对象

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

【Spring】6.深入解析分布式事务:CAP理论、一致性模型与容错机制

随着业务需求的日益复杂&#xff0c;分布式系统架构已成为构建可扩展、高可用服务的主流选择。然而&#xff0c;分布式系统带来了新的挑战&#xff0c;尤其是在事务处理方面。分布式事务需要在多个服务或数据库实例间保持数据的一致性和完整性&#xff0c;这在技术实现上具有很…

组合数问题

1.直接用递推&#xff1a; 下面是AC代码“&#xff1a; #include<bits/stdc.h> using namespace std; const int N2010,mod1e97; int a[N][N]; void init() {for(int i0;i<N;i){for(int j0;j<i;j){if(j0) a[i][j]1;else a[i][j](a[i-1][j]a[i-1][j-1])%mod;}} } i…

【C++并发编程】(二)线程的创建、分离和连接

文章目录 &#xff08;二&#xff09;线程的创建、分离和链接创建线程&#xff1a;示例线程的分离&#xff08;detach&#xff09;和连接&#xff08;join&#xff09;。 &#xff08;二&#xff09;线程的创建、分离和链接 创建线程&#xff1a;示例 线程&#xff08;Thread…

docker搭建redis集群三主三从

为什么需要做分布式redis 水平扩展&#xff1a; 随着业务的发展&#xff0c;单机Redis可能无法满足日益增长的数据存储和访问需求。分布式Redis可以通过将数据分散到多个节点上来实现水平扩展&#xff0c;提高存储容量和处理能力。高可用性&#xff1a; 单点故障是任何系统的一…

C++关联容器2——关联容器特有操作

关联容器操作 除了http://t.csdnimg.cn/osoJZ 中列出的类型&#xff0c;关联容器还定义了下表中列出的类型。这些类型表示容器关键字和值的类型。 关联容器额外的类型别名 key_type此容器类型的关键字类型mapped_type每个关键字关联的类型&#xff1b;只适用于mapvalue_type对…

macOS asdf 工具版本管理器

一、区别于Homebrew "asdf"和"Homebrew"都是用于管理软件包的工具&#xff0c;但它们的主要区别在于适用范围和管理的内容&#xff1a; 1.适用范围&#xff1a; asdf&#xff1a;是一个通用的版本管理工具&#xff0c;可以用来管理多种不同的软件工具和…

结构体介绍(1)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 结构体&#xff08;1&#xff09; 前言一、struct介绍结构体声明结构体创建和初始化struct 的特殊声明结构体自引用 二、结构体内存对齐2.1.对齐规则 总结 前言 结构体 属于…

复习结构体

1.怎样使用结构体变量2.关于 . 和-> 的用法 pst -> age 会被计算机内部转化为&#xff08;*pst).age&#xff0c;这就是 ->的含义&#xff0c;是一种硬性规定 像 float 类型和 double 类型 &#xff0c;由于编码原因&#xff0c;一般都不能被精确存储 像 数字66.6在C…

【快速入门Linux】10_Linux命令—Vi编辑器

文章目录 一、vi 简介1.1 vi1.2 vim1.3查询软连接命令&#xff08;知道&#xff09; 二、打开和新建文件&#xff08;重点&#xff09;2.1 打开文件并且定位行2.2 异常处理 三、vi三种工作模式&#xff08;重点&#xff09;3.1 末行模式-命令 四、常用命令4.0 命令线路图4.1 移…

cache数据库基础操作

Cache数据库(也称为Cach或InterSystems Cach)是一种后关系型数据库,由美国Intersystems公司开发。它提供了高性能、可扩展性和灵活性,特别适合需要处理大量数据和高并发访问的应用场景。以下是一些Cache数据库的基础操作: 安装与设置: 访问Intersystems官方网站或相关资…

WordPress自建站如何备份和恢复数据

WordPress自建站备份和恢复数据的方法如下&#xff1a; 1. 备份数据&#xff1a; – 登录cPanel面板。 – 在域功能区&#xff0c;点击打开WordPress Toolkit。 – 找到需要备份的网站&#xff0c;点击备份/恢复选项。 – 在备份与恢复页面中&#xff0c;点击备份。 – 备…

HTML_CSS学习:CSSLearning

一、优先级 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>优先级</title> <!-- <style>--> <!-- h1{--> <!-- color: #1f33…

cartographer问题处理

问题1 : CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: GMOCK_LIBRARY (ADVANCED)linked by target "time_conversion_test&quo…

自动装箱VS自定拆箱

引言&#xff1a; 在Java中&#xff0c;自动装箱&#xff08;Autoboxing&#xff09;和自动拆箱&#xff08;Autounboxing&#xff09;是Java 5引入的一项特性&#xff0c;用于在基本数据类型和它们的包装类&#xff08;wrapper classes&#xff09;之间进行自动转换。这允许程…

vue中$nextTick用法

$nextTick 是 Vue.js 提供的一个方法&#xff0c;它用于延迟执行一段代码&#xff0c;直到 Vue 完成当前的 DOM 更新。这在处理 DOM 操作或依赖 DOM 状态的代码时特别有用&#xff0c;因为 Vue 是异步执行 DOM 更新的。 用法&#xff1a; javascript this.$nextTick(callbac…

多态及相关

多态及相关 多态的概念多态实现的两个条件及特殊情况虚函数虚函数重写的例外C11 override 和 final 重载、覆盖(重写)、隐藏(重定义)的对比题目1抽象类接口继承和实现继承 题目2&#xff08;很重要&#xff09;多态的原理虚函数表为什么Derive中的func4()在监视窗口里没有显示出…

利用大模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…