微信小程序:图像处理与预览
微信小程序中的图片基础
- 图片资源存储:本地资源与网络资源的使用区别。
- image组件:基础用法与属性详解,如
src
、mode
属性调整图片展示模式。
一、图片上传与压缩
- 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前端常用性能体验优化思路,打造完整前端工作流,提升工程化编码能力和思维能力。