[猫头虎分享21天微信小程序基础入门教程] 第20天:小程序的多媒体功能与图像处理

猫头虎分享21天微信小程序基础入门教程\] 第20天:小程序的多媒体功能与图像处理 ![请添加图片描述](https://file.jishuzhan.net/article/1796156832289394690/a2ac595bac334ea430524692ca4cd9ad.webp) *** ** * ** *** ## 第20天:小程序的多媒体功能与图像处理 🎨 ### 自我介绍 大家好,我是猫头虎,一名全栈软件工程师。今天我们继续微信小程序的学习,重点了解小程序的多媒体功能与图像处理。这些功能可以帮助你在小程序中实现丰富的多媒体交互,提高用户体验。🚀 ### 多媒体功能 #### 一、拍照与录像 微信小程序提供了 `wx.chooseImage` 和 `wx.chooseVideo` API,方便用户拍照和录像。 ##### 1. 拍照 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ data: { photoPath: '' }, takePhoto() { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['camera'], success: (res) => { this.setData({ photoPath: res.tempFilePaths[0] }); }, fail: (err) => { console.error('拍照失败:', err); } }); } }); ``` ##### 2. 录像 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ data: { videoPath: '' }, recordVideo() { wx.chooseVideo({ sourceType: ['camera'], maxDuration: 60, camera: 'back', success: (res) => { this.setData({ videoPath: res.tempFilePath }); }, fail: (err) => { console.error('录像失败:', err); } }); } }); ``` #### 二、音频播放与录音 微信小程序提供了 `wx.createInnerAudioContext` 和 `wx.getRecorderManager` API,用于音频播放和录音。 ##### 1. 音频播放 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ onReady() { this.innerAudioContext = wx.createInnerAudioContext(); this.innerAudioContext.src = 'https://example.com/audio.mp3'; }, playAudio() { this.innerAudioContext.play(); }, onUnload() { this.innerAudioContext.destroy(); } }); ``` ##### 2. 录音 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ data: { recordingPath: '' }, onReady() { this.recorderManager = wx.getRecorderManager(); this.recorderManager.onStop((res) => { this.setData({ recordingPath: res.tempFilePath }); }); }, startRecording() { this.recorderManager.start({ duration: 60000, sampleRate: 44100, numberOfChannels: 1, encodeBitRate: 192000, format: 'aac' }); }, stopRecording() { this.recorderManager.stop(); } }); ``` ### 图像处理 #### 三、图片裁剪与编辑 微信小程序提供了 `canvas` API,可以用来实现图片的裁剪与编辑功能。 ##### 1. 图片裁剪 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ data: { imagePath: '' }, chooseImage() { wx.chooseImage({ count: 1, success: (res) => { this.setData({ imagePath: res.tempFilePaths[0] }); this.drawCanvas(); } }); }, drawCanvas() { const ctx = wx.createCanvasContext('myCanvas'); ctx.drawImage(this.data.imagePath, 0, 0, 300, 300); ctx.draw(); }, cropImage() { wx.canvasToTempFilePath({ canvasId: 'myCanvas', x: 50, y: 50, width: 200, height: 200, destWidth: 200, destHeight: 200, success: (res) => { this.setData({ imagePath: res.tempFilePath }); } }); } }); ``` #### 四、图片滤镜 使用 `canvas` API 可以实现简单的图片滤镜效果。 `wxml` 文件: ```html ``` `js` 文件: ```javascript Page({ data: { imagePath: '' }, onLoad() { this.chooseImage(); }, chooseImage() { wx.chooseImage({ count: 1, success: (res) => { this.setData({ imagePath: res.tempFilePaths[0] }); this.drawCanvas(); } }); }, drawCanvas() { const ctx = wx.createCanvasContext('myCanvas'); ctx.drawImage(this.data.imagePath, 0, 0, 300, 300); ctx.draw(); }, applyFilter() { const ctx = wx.createCanvasContext('myCanvas'); ctx.drawImage(this.data.imagePath, 0, 0, 300, 300); ctx.draw(false, () => { wx.canvasGetImageData({ canvasId: 'myCanvas', x: 0, y: 0, width: 300, height: 300, success: (res) => { let data = res.data; for (let i = 0; i < data.length; i += 4) { // 简单的灰度滤镜 let gray = (data[i] + data[i + 1] + data[i + 2]) / 3; data[i] = data[i + 1] = data[i + 2] = gray; } wx.canvasPutImageData({ canvasId: 'myCanvas', x: 0, y: 0, width: 300, height: 300, data: data, success: () => { console.log('滤镜应用成功'); } }); } }); }); } }); ``` ### 小测试 🧪 * 实现一个简单的拍照功能,并将照片展示在页面上。 * 实现一个简单的录音功能,并将录音文件播放出来。 * 实现一个简单的图片裁剪功能,选择一张图片并裁剪后展示。 * 实现一个简单的图片滤镜功能,对图片应用灰度滤镜效果。 ### 今日学习总结 📚 | 概念 | 详细内容 | |---------|---------------------------------------------------------------------| | 拍照与录像 | 使用 `wx.chooseImage` 和 `wx.chooseVideo` 实现拍照和录像 | | 音频播放与录音 | 使用 `wx.createInnerAudioContext` 和 `wx.getRecorderManager` 实现音频播放和录音 | | 图片裁剪 | 使用 `canvas` API 实现图片裁剪功能 | | 图片滤镜 | 使用 `canvas` API 实现简单的图片滤镜效果 | ### 结语 通过今天的学习,你应该掌握了如何在小程序中实现多媒体功能与图像处理。这些技术可以帮助你在小程序中实现丰富的多媒体交互,提高用户体验。明天我们将探讨小程序的社交分享与消息推送。如果你有任何疑问,欢迎关注并留言在我的公众号**猫头虎技术团队**。📩 *** ** * ** ***

相关推荐
『 时光荏苒 』2 小时前
微信小程序实时日志记录-接口监控
微信小程序·小程序·微信小程序日志·日志抓取
老李不敲代码2 小时前
榕壹云外卖跑腿系统:基于Spring Boot+MySQL+UniApp的智慧生活服务平台
spring boot·mysql·微信小程序·uni-app·软件需求
去看日出3 小时前
Photoshop2025最新版v26超详细图文安装教程(附安装包)
图像处理·photoshop
社会底层无业大学生3 小时前
微信小程序跳
微信小程序·小程序·notepad++
ace_TiAmo5 小时前
React8+taro开发微信小程序,实现lottie动画
微信小程序·小程序·react·taro
老李不敲代码7 小时前
榕壹云在线商城系统:基于THinkPHP+ Mysql+UniApp全端适配、高效部署的电商解决方案
mysql·微信小程序·小程序·uni-app·软件需求
小菠萝09088 小时前
【实际项目分享】多相机取图存图问题
图像处理
专业系统开发老赵9 小时前
小程序租赁系统源码功能分享
小程序
小咕聊编程10 小时前
【含文档+PPT+源码】基于微信小程序的卫生院预约挂号管理系统的设计与实现
微信小程序·小程序