微信小程序的图片上传及图片预览功能

article/2025/11/8 9:19:40

本文为大家分享微信小程序的图片上传及图片预览功能,如下图所示:

需求分析:

  1. 图片上传可以从本地图库选择也可调用相机进行拍照上传
  2. 上传完成之后图片可以进行删除、预览等功能
  3. 图片上传至服务器进行后台调用

代码实现:

wxml文件

<view class="recovery_other_line"><view class="other_text">上传图片</view><view wx:if="{{imageList.length}}" class="choose_upload_view"><view wx:for="{{imageList}}" wx:key="index" class="choose_upload_item"><!-- 图片上传展示 --><image src="{{item}}" class="choose_upload_img" data-index="{{index}}" bindtap="previewBigImage"></image><!-- 删除按钮 --><image src="../../res/img/jdRecycleIcon/icon_remove.png" class="remove_img_icon" data-index="{{index}}" catchtap="removeChooseImage"></image></view></view><!-- 上传按钮 --><view class="other_right other_upload"><image src="../../res/img/jdRecycleIcon/icon_upload.png" class="upload_img" bindtap="chooseImageTap"></image></view>
</view>

js文件

import { baseUrl} from './../../utils/request.js'Page({data: {imageList: [],      // 上传图片集合form: {          // 用于其他功能提交的参数ossUrl: []}},// 选择上传图片的方式chooseImageTap() {let _this = this;wx.showActionSheet({itemList: ['从相册中选择', '拍一张'],itemColor: "#f7982a",success(res){if (!res.cancel) {if (res.tapIndex == 0) {// 从相册中选择_this.chooseWxImage('album')} else if (res.tapIndex == 1) {// 使用相机_this.chooseWxImage('camera')}}}})},// 选择图片chooseWxImage(type) {let _this = this;let imgs = this.data.imageList;wx.chooseImage({count: 1,sizeType: ['original', 'compressed'],sourceType: [type],success(res) {if (imgs.length > 2) {return wx.showToast({title: '最多可上传三张图片',icon: 'none'})}_this.upload(res.tempFilePaths[0]);}})},//上传图片到服务器upload: function(path) {let _this = this;let {ossUrl} = this.data.form;console.log(ossUrl)wx.showToast({icon: "loading",title: "正在上传"}),//将本地资源上传到服务器wx.uploadFile({url: baseUrl,    // 开发者服务器地址filePath: path,   // 要上传文件资源的路径 (本地路径)name: 'editormd-image-file',   // 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容header: {   // HTTP 请求 Header,Header 中不能设置 Referer"Content-Transfer-Encoding": "binary","Content-Type": "application/octet-stream","Content-Disposition": "form-data"},formData: {//和服务器约定的token, 一般也可以放在header中'token': wx.getStorageSync('userData').token,},success: function(res) {console.log(res)// 判断下if (res && res.data) {const data = JSON.parse(res.data);if (res.statusCode != 200) {wx.showToast({title: data.responseBody.data.message,icon: 'none'})return;} else {if (!!data.responseBody.data) {ossUrl.push(data.responseBody.data.url);_this.setData({imageList: ossUrl,'form.ossUrl': ossUrl  })}}}},fail: function(e) {wx.showToast({title: '上传失败',icon: 'none'})},complete: function() {wx.hideToast(); //隐藏Toast}})},// 删除图片removeChooseImage(e) {let imgs = this.data.form.ossUrl;let {index} = e.currentTarget.dataset;imgs.splice(index, 1);this.setData({'form.ossUrl': imgs,imageList: imgs})},// 预览图片previewBigImage(e) {let imgs = this.data.imageList;let {index} = e.currentTarget.dataset;wx.previewImage({//当前显示图片current: imgs[index],//所有图片urls: imgs})}
})

css文件

.recovery_other_line {display: flex;line-height: 124rpx;align-items: center;justify-content: space-between;
}
.recovery_other_line .upload_img {width: 36rpx;height: 36rpx;
}
.recovery_other_line .other_text {width: 150rpx;font-size: 28rpx;color: #000;
}
.choose_upload_view {flex: 1;height: 100%;display: flex;align-items: center;justify-content: flex-end;
}
.choose_upload_item {margin-left: 38rpx;position: relative;width: 100rpx;display: flex;align-items: center;
}
.choose_upload_view .choose_upload_img {width: 100rpx;height: 100rpx;
}
.choose_upload_view .remove_img_icon {padding: 4rpx;position:absolute;top: -15rpx;right: -13rpx;width: 28rpx;height: 28rpx;border-radius: 50%;background-color: rgba(0, 0, 0, .5);
}
.other_upload {margin-left: 15rpx;width: 80rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助。。。


http://chatgpt.dhexx.cn/article/jbAdA12p.shtml

相关文章

微信小程序中,图片的位置设置

在编写小程序的时候&#xff0c;难免会涉及到图片的位置放置。 以及具体的wxss格式的设置&#xff0c;在这里想进行一个具体格式的讲解。 第一种&#xff1a;图片不换行&#xff0c;多个图片排列在同一行 具体样例如下图&#xff1a;黄色荧光笔所绘&#xff1a; 要实现该操作…

微信小程序图片裁剪功能的实现

文章目录 图片上传与处理图片尺寸适配图片显示与裁剪框裁剪框的拖动与缩放增加canvas并裁剪图片保存图片到相册总结 在之前的博文中&#xff0c;已经介绍了如何使用在前端开发中&#xff0c;实现较方便自由的图片裁剪功能&#xff0c;可见博文&#xff1a; 如何一步步实现图片…

微信小程序第四篇:生成图片并保存到手机相册

系列文章传送门&#xff1a; 微信小程序第一篇&#xff1a;自定义组件详解 微信小程序第二篇&#xff1a;七种主流通信方法详解 微信小程序第三篇&#xff1a;获取页面节点信息 目录 一、封装分享组件 二、定义用户授权方法 三、调用流程 首先我们看一下要完成的效果&#x…

微信小程序 怎么插入图片?image组件的使用教程。

这期我们来学学怎么在小程序中插入图片 1.image组件的简介 是小程序中一个图片的组件 image组件有一个默认宽度和高度&#xff08;宽300px&#xff0c;高240px&#xff09; 支持 JPG、PNG、SVG、WEBP、GIF 等格式&#xff0c;2.3.0 起支持云文件ID。 我们先添加一个image组件给…

微信小程序-image(图片)

在微信小程序中&#xff0c;要显示一张图片&#xff0c;有两种图片加载方式&#xff1a; 加载本地图片加载网络图片 加载本地图片 <image class"widget__arrow" src"/image/arrowright.png" mode"aspectFill"> </image> src"/…

MTCNN人脸检测算法

人脸检测是指识别数字图像中的人脸。人脸检测可以视为目标检测的一种特殊情况。在目标检测中&#xff0c;任务是查找图像中特定类的所有对象的位置和大小。例如行人和汽车。 在人脸检测中应用较广的算法就是MTCNN&#xff08; Multi-task Cascaded Convolutional Networks的缩…

于仕琪的人脸检测算法

转自&#xff1a;https://blog.csdn.net/Jacky_Ponder/article/details/51819273 于仕琪的人脸检测算法&#xff0c;对Windows下的商业使用也免费。刚更新了一次算法&#xff1a;①正面人脸检测的角度范围从[-40, 40]度提升到[-60,60]度&#xff0c;检测角度变大但计算量不增加…

10种轻量级人脸检测算法大PK

几个月前&#xff0c;AIZOO曾经盘点过 最强六大开源轻量级人脸检测项目分析 | 附打包下载&#xff0c;nihate同学将它丰富到10种算法&#xff0c;并用Python.对他们进行了汇总整理&#xff0c;以及效果的对比。 Github链接&#xff1a;https://github.com/hpc203/10kinds-ligh…

目前最好的人脸检测算法,RetinaFace论文详解

原文链接&#xff1a;https://www.jianshu.com/p/d4534ac94a65 微信搜索&#xff1a;AI算法与图像处理&#xff0c;最新干货全都有 大家好&#xff0c;今天给大家分享一篇人脸算法领域非常知名的paper&#xff0c;RetinaFace(RetinaFace: Single-stage Dense Face Localisation…

人脸检测算法理解之mtcnn

最近在一次交流活动中&#xff0c;再次听别人讲人脸检测算法mtcnn&#xff0c;虽然以前也断断续续听过两次&#xff0c;对于一些技术细节仍不清楚&#xff0c;为了解决自己的困惑&#xff0c;笔者又重拾起这一算法&#xff0c;在认真研读论文和思考后有了新的理解&#xff0c;于…

人脸检测算法总结:PyramidBox

人脸检测算法总结&#xff1a;PyramidBox IntroductionPyramidBoxTraining PyramidBox是百度提出的人脸检测算法&#xff0c;提出后在widerface上排第一&#xff08;现在已经不是了&#xff0c;但仍居前三&#xff09;&#xff0c;PyramidBox可以看做是S3FD的升级版&#xff0c…

人脸检测算法总结:S3FD

人脸检测算法总结&#xff1a;S3FD——Single Shot Scale-invariant Face Detector IntroductionS3FDTraining结论 S3FD是中科院自动化所的一篇文章&#xff0c;当时一出现就刷新了wider face榜单&#xff0c;比上一篇提到的SSH略高一点。这个算法主要是解决小人脸的检测问题&a…

SSH人脸检测算法(SSH: Single Stage Headless Face Detector)

论文&#xff1a;《SSH: Single Stage Headless Face Detector》 链接&#xff1a;https://arxiv.org/pdf/1708.03979.pdf 代码链接&#xff1a;https://github.com/mahyarnajibi/SSH 摘要 我们介绍了单点无头&#xff08;SSH&#xff09;人脸检测器。与两阶段提议分类检测器…

人脸检测算法MTCNN

本文将对人脸检测效果不错的MTCNN算法做一个梳理。 论文地址 MTCNN主要分为三步&#xff1a; 最初先对图像进行多尺度变换&#xff0c;获取图像金字塔&#xff0c;获取图像多尺度信息。 P-net(Proposal Network)&#xff1a; 主要使用一个全卷机网络&#xff0c;获取候选框…

YbFace:完全开源的人脸检测算法

YbFase(yolo base face detector),是一个借鉴了yolov3的网络结构,在多特征尺度下预测人脸框的人脸检测算法.并结合了yolov4使用的mish激活函数.该模型大小仅为7,8M,无论模型大小,还是准确率,还是执行速率都很有竞争力. 源码地址(github)&#xff1a; face_detect 如果对你有…

适合ARM 的轻量级人脸检测算法汇总

目录 1、场景需求2、libfacedetection2.1 相关链接2.2 算法简介2.3 算法效果展示2.4 算法性能展示 3、Ultra-Light-Fast-Generic-Face-Detector-1MB3.1 相关链接3.2 算法简介3.3 算法效果展示3.4 算法性能展示 4、BlazeFace4.1 相关链接4.2 算法简介4.3 算法效果展示4.4 算法性…

opencv算法+人脸检测

文章目录 ORB算法视频读写图像人脸识别摄像头实时人脸检测 ORB算法 orb算法结合了Fast和Brief算法&#xff0c;提出了构造金字塔&#xff0c;为Fast特征点添加了方向&#xff0c;从而使得关键点具有了尺度不变性和旋转不变性。 # orb算法结合了Fast和Brief算法&#xff0c;提…

人脸检测算法对比分析

&#xfeff;&#xfeff; https://blog.csdn.net/twinkle_star1314/article/details/53318689 人脸识别包括以下5个步骤&#xff1a;人脸检测、图像预处理、特征提取、匹配、结果输出。 人脸检测是人脸识别中的第一个环节&#xff0c;是一项关键技术。人脸检测是指假设在输入…

人脸检测算法:mtcnn简介

人脸检测算法:MTCNN简介 算法流程网络介绍训练方法 MTCNN是一个针对于人脸检测的模型, 由PNet, RNet, 和ONet三个网络组成,三个网络都比较轻量, 易于训练.基于pytorch的实现可以看我这篇&#xff1a; 链接: l利用celebA数据集训练MTCNN网络. 算法流程 1. 对传入P网络的图片re…

10种轻量级人脸检测算法的比拼

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 转自&#xff1a;https://blog.csdn.net/nihate/article/details/108798831 计算机视觉研究院专栏 作者&#xff1a;Edison_G 最近在微信公众号里看到…