首页 > 编程语言 >小白学习微信小程序开发中的图片和音频处理

小白学习微信小程序开发中的图片和音频处理

时间:2024-07-18 09:00:24浏览次数:10  
标签:const 微信 音频 程序开发 tempFilePath res wx 图片

微信小程序开发中,图片和音频的处理是非常常见的功能之一。在本文中,我将详细介绍如何在小程序中进行图片和音频的处理,并提供相关的代码案例。

一、图片处理

  1. 图片的选择和上传

在小程序中,用户可以选择图片并上传。首先需要在app.json中注册chooseImageuploadFile的相关权限。然后,在页面中通过调用wx.chooseImage来让用户选择图片,并使用wx.uploadFile来将图片上传到服务器:

// 页面js代码
Page({
  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 1, // 最多可选择的图片数量
      success: (res) => {
        const tempFilePaths = res.tempFilePaths[0];
        // 将图片上传到服务器
        this.uploadImage(tempFilePaths);
      },
    });
  },
  // 上传图片
  uploadImage(filePath) {
    wx.uploadFile({
      url: 'https://example.com/upload', // 上传图片的接口地址
      filePath: filePath,
      name: 'image',
      success: (res) => {
        console.log('图片上传成功', res);
      },
      fail: (error) => {
        console.log('图片上传失败', error);
      },
    });
  },
});

  1. 图片的裁剪和压缩

在小程序中,我们可以对选择的图片进行裁剪和压缩。首先,通过调用wx.chooseImage来选择图片,并使用wx.getImageInfo获取图片的信息。然后,在canvas中进行裁剪和压缩,并通过canvas生成新的图片:

// 页面js代码
Page({
  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 1, // 最多可选择的图片数量
      success: (res) => {
        const tempFilePaths = res.tempFilePaths[0];
        // 获取图片信息
        wx.getImageInfo({
          src: tempFilePaths,
          success: (res) => {
            const { width, height } = res;
            // 裁剪图片
            const ctx = wx.createCanvasContext('myCanvas');
            const ratio = 2; // 图片缩放比例
            const canvasWidth = width / ratio;
            const canvasHeight = height / ratio;
            ctx.drawImage(tempFilePaths, 0, 0, width, height, 0, 0, canvasWidth, canvasHeight);
            ctx.draw(false, () => {
              // 生成新的图片
              wx.canvasToTempFilePath({
                canvasId: 'myCanvas',
                success: (res) => {
                  const newFilePath = res.tempFilePath;
                  console.log('新的图片路径', newFilePath);
                },
              });
            });
          },
        });
      },
    });
  },
});

  1. 图片的滤镜效果

在小程序中,我们还可以为图片添加滤镜效果。首先,通过调用wx.chooseImage来选择图片,并使用wx.getImageInfo获取图片的信息。然后,在canvas中使用filter属性来设置滤镜效果,并通过canvas生成新的图片:

// 页面js代码
Page({
  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 1, // 最多可选择的图片数量
      success: (res) => {
        const tempFilePaths = res.tempFilePaths[0];
        // 获取图片信息
        wx.getImageInfo({
          src: tempFilePaths,
          success: (res) => {
            const { width, height } = res;
            // 添加滤镜效果
            const ctx = wx.createCanvasContext('myCanvas');
            ctx.drawImage(tempFilePaths, 0, 0, width, height);
            ctx.filter = 'sepia(100%)'; // 添加滤镜效果
            ctx.draw(false, () => {
              // 生成新的图片
              wx.canvasToTempFilePath({
                canvasId: 'myCanvas',
                success: (res) => {
                  const newFilePath = res.tempFilePath;
                  console.log('新的图片路径', newFilePath);
                },
              });
            });
          },
        });
      },
    });
  },
});

二、音频处理

  1. 音频的录制和播放

在小程序中,我们可以录制和播放音频。首先需要在app.json中注册recordplayVoice的相关权限。然后,在页面中通过调用wx.startRecord来开始录制音频,然后通过wx.stopRecord来停止录制,并使用wx.playVoice来播放录制的音频:

// 页面js代码
Page({
  // 录制音频
  startRecord() {
    wx.startRecord({
      success: (res) => {
        const tempFilePath = res.tempFilePath;
        console.log('录制成功', tempFilePath);
      },
      fail: (error) => {
        console.log('录制失败', error);
      },
    });
  },
  // 停止录制
  stopRecord() {
    wx.stopRecord();
  },
  // 播放录制的音频
  playVoice() {
    const tempFilePath = '录制的音频路径';
    wx.playVoice({
      filePath: tempFilePath,
      complete: (res) => {
        console.log('播放完成', res);
      },
    });
  },
});

  1. 音频的上传和下载

在小程序中,我们可以上传和下载音频文件。首先需要在app.json中注册uploadFiledownloadFile的相关权限。然后,在页面中通过调用wx.uploadFile来将音频上传到服务器,并使用wx.downloadFile来下载服务器上的音频文件:

// 页面js代码
Page({
  // 上传音频
  uploadAudio() {
    wx.chooseMessageFile({
      count: 1, // 最多可选择的文件数量
      type: 'file',
      success: (res) => {
        const tempFilePath = res.tempFiles[0].path;
        // 将音频上传到服务器
        this.uploadAudioFile(tempFilePath);
      },
    });
  },
  // 上传音频文件
  uploadAudioFile(filePath) {
    wx.uploadFile({
      url: 'https://example.com/upload', // 上传音频的接口地址
      filePath: filePath,
      name: 'audio',
      success: (res) => {
        console.log('音频上传成功', res);
      },
      fail: (error) => {
        console.log('音频上传失败', error);
      },
    });
  },
  // 下载音频文件
  downloadAudio() {
    wx.downloadFile({
      url: 'https://example.com/audio.mp3', // 音频文件的下载地址
      success: (res) => {
        const tempFilePath = res.tempFilePath;
        console.log('音频下载成功', tempFilePath);
        // 播放音频
        wx.playVoice({
          filePath: tempFilePath,
          complete: (res) => {
            console.log('播放完成', res);
          },
        });
      },
      fail: (error) => {
        console.log('音频下载失败', error);
      },
    });
  },
});

以上就是小程序中图片和音频处理的相关内容。通过以上代码案例,你可以了解如何在小程序中选择和上传图片,以及对图片进行裁剪、压缩和添加滤镜效果。同时,也可以学习如何录制和播放音频,以及上传和下载音频文件。希望能对你的学习和开发有所帮助。

标签:const,微信,音频,程序开发,tempFilePath,res,wx,图片
From: https://blog.csdn.net/m0_75244442/article/details/140484548

相关文章

  • 微信小程序开发中的多端兼容与适配
    微信小程序是一种基于微信平台的应用程序开发框架,可以在微信中直接运行的应用。它具有跨平台、快速迭代、便于推广等特点,因此在移动应用开发中越来越受欢迎。然而,由于不同平台的差异,开发人员在进行多端兼容与适配时面临一些挑战。本文将介绍微信小程序开发中的多端兼容与适配内......
  • 使用Django框架实现音频上传功能
    数据库设计(models.py)classMusic(models.Model):"""音乐"""name=models.CharField(verbose_name="音乐名字",max_length=32)singer=models.CharField(verbose_name="歌手",max_length=32)#本质上数据库也是Cha......
  • 微信保存的图片很模糊,用这个软件,秒变高清图!
    我们有时从微信下载下来的图片就是很模糊,重新加载也一样,不知道什么原因。那么有什么好的解决图片模糊的办法吗?微信保存的图片很模糊,用这个软件,秒变高清图!或者是写一个东西,需要配图,在网络上好不容易找到一张图,但是图片很小,一拉大就变模糊了,结果只好无奈舍弃。或者你需要用......
  • 2024年最新版微信小程序批量检测封禁接口实现代码分享
    ​       ​      <?php//要检测的appid列表$appids=array('appid1','appid2','appid3');//使用实际的appid//循环调用接口检测小程序状态foreach($appidsas$appid){    $url='https://down.ychengsnsm.com/xcx/checkxcx.php?appid='......
  • 数字音频基础­­­­­-从PCM说起
    首先问一个问题——一首歌大概几MB?AI回答一首歌的大小大约为40MB。‌这个估算基于WAV格式的音乐文件,‌这种格式由微软发明,‌以PCM编码为主,‌是多媒体音频中最广泛的格式之一。‌WAV文件的三个主要参数包括采样位数、‌采样频率和声道数。‌通常,‌以PCM编码的WAV文件采样位数是1......
  • STFT:解决音频-视频零样本学习 (ZSL) 中的挑战
        传统的监督学习方法需要大量的标记训练实例来进行训练,视听零样本学习的任务是利用音频和视频模态对对象或场景进行分类,即使在没有可用标记数据的情况下。为了解决传统监督方法的限制,提出了广义零样本学习(GeneralizedZero-ShotLearning,GZSL)的设置。GZSL方法允许......
  • 微信小程序源码-基于Java后端的国产动漫论坛系统毕业设计(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • 微信小程序源码-基于Java后端的游戏账号交易系统毕业设计(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • Vue3 - 微信公众号H5网站使用微信扫一扫(微信扫码),苹果报错 {“errMsg“:“scanQRCode
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在vue3|nuxt3微信公众号网页开发中,微信移动端h5网页使用JS-SDK中的“微信扫码(微信扫一扫)”wx.scanQRCode接口,苹果ios系统真机测试时出现报错:“errMsg”:“scanQRCode:thepermissi......
  • 蓝牙(Bluetooth)音频协议 & 音频编解码协议
    简短不看版:协议名称  特点HSP(手机协议,Head-Set-Profile)提供手机与耳机之间通信所需的基本功能。连接和配置好后,耳机可以作为远程设备的音频输入和输出接口HFP(免提协议,Hands-Free-Profile)在HSP协议的基础上增加了一些扩展功能A2DP(高级音频传送协议,Adva......