小程序实现图片上传,预览以及图片base64位处理

简介: 小程序实现图片上传,预览以及图片base64位处理


最近一段时间在做小程序项目,第一期功也完工了。需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑。今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理。下面就是展示的效果

 63f1dbc07b0b3222983643970614c7d9.png

1页面布局

  <view class='images-wrap'>
  <block wx:for="{{imagesList}}" wx:key="id">
    <view class='images-list' wx:if="{{imagesList.length > 0}}" >
      <image class='images-item' src='{{item}}' bindtap="handleImagePreview" mode="aspectFill" data-index="{{index}}"></image>
      <view class='image-remover' bindtap="removeImage" data-index="{{index}}">X</view>
    </view>
  </block>
    <!-- 上传图片按钮 -->
    <view class='images-list images-btn' bindtap='chooseImage' wx:if="{{imagesList.length < 1}}">
      <image class='btn-item' src='/assets/images/camera.png'></image>
      <text class='add'>添加图片</text>
    </view>
  </view>
</view>


2.给上传图片绑定一个事件chooseImage,用于事件触发,在data中定义一个数组。imagesList用于图片存储,baseImg单独存base64位图片的

chooseImage(e){

const that = this;
// let baseImg = that.data.baseImg;
wx.chooseImage({
  sizeType: ['original', 'compressed'],  //可选择原图或压缩后的图片
  sourceType: ['album', 'camera'], //可选择性开放访问相册、相机
  success: function(res) {
    //拿到图片地址
    const imagesList = that.data.imagesList.concat(res.tempFilePaths);
    that.data.imagesList = imagesList.length <= 1 ? imagesList : imagesList.slice(0, 1);
    //图片base64位
    wx.getFileSystemManager().readFile({
      filePath: res.tempFilePaths[0], //选择图片返回的相对路径
      encoding: 'base64', //编码格式
      success:(res) =>{
        let baseImg = 'data:image/png;base64,' + res.data
        that.data.baseImg = baseImg
      }
    })
    that.setData({
      imagesList
    })
  }
})

},
上面小程序自己提供api方法,哪里直接用,根据自己的需求进行修改

that.data.imagesList = imagesList.length <= 1 ? imagesList : imagesList.slice(0, 1); 限制只上传一张图片,可以根据自己的需要进行修改
 图片处理base64位,直接调用小程序自带的wx.getFileSystemManager就可以

 3.图片实现预览功能,直接上代码,也是调用下程序官网api的

handleImagePreview(e){

//预览图片
const idx = e.target.dataset.idx;
const imagesList = this.data.imagesList;

wx.previewImage({
  current: imagesList[idx],  //当前预览的图片
  urls: imagesList,  //所有要预览的图片
})

},
4.图片删除功能

removeImage(e){

//删除单个图片
let _this = this;
let index = e.target.dataset.index;
let images = _this.data.imagesList;
images.splice(index, 1)
_this.setData({
  imagesList: images
})

},
每天进去一点点,好好总结经验

目录
相关文章
|
小程序
小程序消除图片下边距的三个方法
小程序消除图片下边距的三个方法
592 167
|
人工智能 小程序 前端开发
【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
本文介绍了如何将相机抽取的RGBA帧图像解析为`.jpg`或`.png`格式,适用于体测、赛事等场景。首先讲解了RGBA图像结构,其为一维数组,每四个元素表示一个像素的颜色与透明度值。接着通过`uni.createOffscreenCanvas()`创建离屏画布以减少绘制干扰,并提供代码实现,将RGBA数据逐像素绘制到画布上生成图片。最后说明了为何不直接使用拍照API及图像转换的调用频率建议,强调应先暂存帧数据,运动结束后再进行转换和上传,以优化性能。
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
4095 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
运维 小程序 前端开发
小程序开发问题之在小程序中调用my.chooseImage接口让用户选择图片如何解决
小程序开发问题之在小程序中调用my.chooseImage接口让用户选择图片如何解决
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
474 0
在线课堂+工具组件小程序uniapp移动端源码
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
525 1
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
909 0
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
5229 3
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
937 0
微信小程序更新提醒uniapp