微信小程序:图像处理与预览

微信小程序中的图片基础

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

一、图片上传与压缩

  • wx.chooseImage:选择图片的API使用示例。
  • wx.compressImage:图片压缩的重要性与实现方法。
  • 代码示例:
chooseAndCompressImage() {
  wx.chooseImage({
    count: 1, // 默认9
    sizeType: ['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属性。
#微信小程序#
HTML前端网站开发 文章被收录于专栏

以实战为线索,逐步深入HTML开发各个环节,掌握web前端常用性能体验优化思路,打造完整前端工作流,提升工程化编码能力和思维能力。

全部评论

相关推荐

我朋友的华子2012,HR已经开始问意向地区了,好急
不讲武德的黑眼圈很能干:急得不行 也不说评级 不知道报的多少啊😡
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务