微信小程序:图像处理与预览
【摘要】 微信小程序中的图片基础图片资源存储:本地资源与网络资源的使用区别。image组件:基础用法与属性详解,如src、mode属性调整图片展示模式。 一、图片上传与压缩wx.chooseImage:选择图片的API使用示例。wx.compressImage:图片压缩的重要性与实现方法。代码示例:chooseAndCompressImage() { wx.chooseImage({ cou...
微信小程序中的图片基础
- 图片资源存储:本地资源与网络资源的使用区别。
- 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属性。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)