移动端(h5)上传,压缩,预览图片

vue3 - 实现移动端H5网页调用手机相册选取图片或打开摄像头相机拍照上传,H5调用本地相册/相机上传图片详细教程,如何在h5网站浏览器中打开本机相册或相机选择相片(附图片压缩功能及上传服务器示例) vue3手机H5网页,调起安卓苹果ios手机相册和相机,H5实现调用手机摄像头相册实现图片压缩预览删除,vue3项目调用摄像头和相册,H5调用手机摄像头,vue3 H5拍照上传,手机网站浏览器移动端调取相机或相册,实现拍照上传功能,解决苹果ios手机无法打开相册相机问题,无法唤起摄像头怎么办,调取本机系统的相册,vue3 h5网页调用相机拍照和相册,实现多张图片上传功能,实时拍照上传,VUE3如何唤起手机摄像头拍照上传,H5调起手机端的摄像头,html5调用手机摄像头,实现H5调起手机相机和相册,图片压缩, 阅读详情

项目里边这次用到了移动端上传图片,拿出来分享下。

1.首先是思路,在input 发生change的时候判断浏览器时候支持图片预览,支持的情况下校验图片的格式,图片的大小,之后将拿到的图片进行canvas压缩,图片转base64,然后上传。

2.代码

            $(".file").on("change", function() {
                var that = $(this);

                //判断是否支持FileReader
                if(window.FileReader) {
                    var reader = new FileReader();
                } else {
                    $(".u-pop").showTip("您的设备不支持图片预览功能,如需该功能请升级您的设备!", "", "确定");
                }


                    //获取文件
                    var file = $(this)[0].files[0];
                    var imageType = /^image\//;
                    //是否是图片
                    if(!imageType.test(file.type)) {
                        $(".u-pop").showTip("请选择正确图片!", "", "确定");
                        return;
                    }
                    if(file.size / 1024 / 1024 > 5) {
                        $(".u-pop").showTip("图片不能大于5M!", "", "确定");
                        return;
                    }
                    if(imglength == 4) {
                        that.parent().hide();
                    }

                    //读取完成
                    reader.onload = function(e) {
                        var image = new Image();
                        image.src = e.target.result;
                        //alert(e.target.result.length)
                        var base64 = null;
                        image.onload = function() {
                            var expectWidth = this.naturalWidth;
                            var expectHeight = this.naturalHeight;
                            var canvas = document.createElement("canvas");
                            var ctx = canvas.getContext("2d");
                            canvas.width = expectWidth;
                            canvas.height = expectHeight;
                            ctx.drawImage(this, 0, 0, expectWidth, expectHeight, 0, 0, expectWidth, expectHeight);

                            base64 = canvas.toDataURL("image/jpeg", 0.3);//0.3为降低的品质数
                            //alert(base64.length)
                            //获取图片dom
                            var section = document.createElement('section');
                            section.setAttribute("class", "up-section ");
                            var imgdelete = document.createElement("img");
                            imgdelete.setAttribute("src", "");
                            var img = document.createElement("img");
                            var addimg = document.getElementsByClassName("addimg")[0]
                            //图片路径设置为读取的图片
                            img.src = base64;
                            img.className = "up-img";
                            section.appendChild(img);
                            that.parent().before(section);
                        };
                    };
                    reader.readAsDataURL(file);         

            });

3.请求后台接口

                    var files = list.eq(i).find(".slides-show img");                            
                        var fd = new Array();
                        for(var j = 0; j < files.length; j++) {
                            fd[j] = files[j].src;
                        };
                    $.ajax({
                        url: xxx,
                        type: 'post',
                        data: {
                            token: token,
                            datalist: fd
                        },
                        traditional: true,//fd为数组是需要加
                        //processData: false,
                        //contentType: false,
                        success: function(data) {
                            $(".u-pop").showTip(" 评价成功!");
                            var t = setTimeout(function() {
                                window.history.go(-1);
                                clearTimeout(t);
                            }, 1000);

                        },
                        error: function(e) {
                            $(".u-pop").showTip("评价失败", "", "确定");
                        }
                    });

不足知促没有用formdata做二进制的处理,原因后端暂时不支持。

H5手机相机拍照上传全攻略:capture与getUserMedia选型及实现 移动端H5开发中,调用手机相机拍照并上传是高频需求。实现路径主要依赖input capture和getUserMedia两种方式,前者简洁稳定,后者支持实时预览与自定义取景。理解两者原理与差异,结合canvas截帧、图片压缩及FormData上传,可构建完整拍照上传链路。实战中需重点处理iOS黑屏、EXIF方向、权限拒绝与弱网重试等边界问题。本文从基础概念到工程实践,系统拆解移动端拍照上传的完整实现,为快速交付可靠功能提供参考。 阅读详情

相关推荐

H5移动端裁剪上传图片

现在越来越多的 手机站点 但是 h5上传图片一直是我们的一个痛点,今天我解决了这个问题。 更好的在手机上以 拍照,相册 获取来的照片经过设定大小上传到服务器。全原生js编写。

移动端HTML5 上传图片(单张/多张)

转载:https://blog.youkuaiyun.com/cdgogo/article/details/108305283

Victoriasxy的博客 695

uploadify H5版(uploadifive)基于html5的手机上传图片插件

基于H5的手机上传图片控件,Demo是用html,后台代码是.net。小白亦可看懂,直接拿来做项目。代码中附加图片处理的功能,有详细的注释。

移动端H5实现图片上传

需求 公司现在在移动端使用webuploader实现图片上传,但最近需求太奇葩了,插件无法满足我们的PM经过商讨决定下掉这个插件,使用H5原生的API实现图片上传。 7.3日发布:单张图片上传 9.29日更新:多张图片并发上传 11.06日更新:常见问题 效果图: 基础知识 上传图片这块有几个知识点要先了解的。首先是有几种常见的移动端图片...

weixin_33975951的博客 2737

.net手机端移动端多图片h5上传案例代码

.net手机端移动端h5上传案例代码 自己测试过 可以用 .net手机端移动端多图片h5上传案例代码

asp.net H5 多文件上传真代码

经我自己测试过的H5上传文件代码,网上下载的代码是有问题的,不能成功上传,此问题我已修复。asp.net H5多文件上传

移动端h5上传图片

最近事比较少,封装一个h5的移动端上传文件组件,先看效果: HTML部分: <!-- 图片上传预览 --> <div class="imgList"> <!-- 身份证正面 --> <div class="imgList_item" @click="Upload(1)"> <div class="imgList_item_box" v-show="verify1">

splitSecond的博客 904

尚硅谷 Vue2.0 + Vue3.0 入门到精通教程学习笔记 (一)

本文为总结尚硅谷Vue2.0+Vue3.0 的学习笔记系列的第一章——Vue的核心,包含Vue简介、模板语法、数据绑定、MVVM模型、事件处理,计算属性与监视、class与style绑定、列表渲染、过滤器、内置指定和自定义指令以及Vue生命周期等知识点

weixin_44566194的博客 3655

移动端H5页面上传图片或多张图片介绍 安卓无法多图上传

移动端H5上传图片的方式,要点如下: 要点 解析 input 即input标签 type input标签的type属性,需要为file accept 说明接收文件类型,决定调用的资源种类 capture 指明调用的目标 multiple 是否支持多文件 实例如下: <div>纯input与type</div>...

滴水石穿 6634

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 406

SAP FI 提示没有为会计年度0 定义版本2025 GP626

SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。

GAVIN 2490

HTML5实现input:file上传压缩,等比压缩图片、base64和文件互相转换

本文实例为大家分享了Vue2.0实现调用摄像头进行拍照功能的具体代码,以及图片上传功能引用exif.js,供大家参考,具体内容如下 所需要的插件:https://download.youkuaiyun.com/download/qq_42396791/10728846 插件: 1.jquery.min.js 2.exif.js 效果目标:实现等比例压缩上传 上代码 HTML &lt;!DOC...

qq_42396791的博客 7793

固定时间收敛的控制器设计(基础知识)

针对控制系统的有限时间收敛和固定时间收敛给出一些常用定理。

qq_40241332的博客 1万+

移动端h5图片上传

html结构type: 必须是file multiple :表示允许多图上传。 accept:表示允许接收的图片类型,这里设置为image/*标识 jpg,jepg等常见图片类型都允许 &amp;amp;lt;input type=&amp;amp;quot;file&amp;amp;quot; id=&amp;amp;quot;fileinput&amp;amp;quot; onchange=&amp;amp;quot;addImg()&amp

ifredom 8872

MOSFET开关损耗全面讲解:从原理到优化策略

深入剖析MOSFET开关损耗的产生机制,结合实际应用场景,讲解如何通过驱动设计和电路优化降低损耗,提升系统效率。重点关注mosfet在高频开关下的表现与热管理。

weixin_29476595的博客 1059

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 459

jquery实现图片的本地预览

jquery实现图片的本地预览

weixin_42060658的博客 581

动力学约束下的运动规划算法——Kinodynamic RRT*算法

动力学约束下的运动规划算法——Kinodynamic RRT*算法

慕羽★的博客 6750

H5 和小程序拍照图片旋转、压缩和上传

原文地址:github.com/whinc/blog/… 最近接到一个“发表评论”的需求:用户输入评论并且可以拍照或从相册选择图片上传,即支持图文评论。需要同时在 H5 和小程序两端实现,该需求处理图片的地方较多,本文对 H5 端的图片处理实践做一个小结。项目代码基于 Vue 框架,为了避免受框架影响,我将代码全部改为原生 API 的实现方式进行说明,同时项目代码中有很多其他额外的细节和功能(...

weixin_33672109的博客 1122

K8s(十二):监控与报警(163邮箱+钉钉)-Prometheus + Grafana + Alertmanager(超详细)

🔴 K8s(十二):监控与报警(163邮箱+钉钉)-Prometheus + Grafana + Alertmanager(超详细)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[组件]—— 图片上传预览 组件(移动端)

之前的一篇博客:移动端H5图片预览和压缩,实现了基本的功能。这次则计划做成一个组件,可供前台、后台使用。 首先,我们先来捋一捋想要实现的功能: 预览 删除 压缩 上传到服务器 基本机构 这样,我们的组件结构就有了: ;!function(window, $, undefined){ function Upload() { }; Upload.prototype.ch...

weixin_30407099的博客 201

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ElementUI h5 移动端照片拍照 本地预览 旋转压缩 并上传

文章目录调用摄像头拍照本地预览旋转压缩上传 功能需求是移动端扫描二维码之后,跳转到在线网页进行自拍,然后上传拍照结果。 调用摄像头拍照 在h5中,使用input type="file"的 capture="camera"这个属性就可以调用摄像头 在这里我们使用的是ElementUI的组件,实际这个组件里面是包含一个input type="file"的元素的 所以我们只需要修改这个元素的capt...

woflyoycm的博客 3387

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Vue进阶(四十八):Vue.js 2.0 移动端拍照压缩图片预览及上传

在学习和使用Vue.js 2.0 的过程中遇到不少不一样的地方,本来移动端开发H5应用,准备将mui框架和Vue.js+vue-router+vuex 全家桶结合起来使用,但是在拍照上传的实现过程中遇到了无法调用plus的H5+接口的问题,所以最后拍照上传功能还是使用input file方式里解决的。但是内心还是不甘心的,由于项目进度推进,迭代版本,所以不得不放弃,后续可能我将此功能使用调用H5+...

IT全栈 华强工作室 3509

移动端手机h5上传图片旋转90度

移动端手机h5上传图片会旋转90度的问题 h5页面调用相机正常情况下都是正常的,但是有些手机横着照相的时候就会正常的,iphone正确的拍照方式是横屏的,而用户往往是竖屏拍照上传的,就相当于照相机反转了90度,当你横屏拍照上传,图片就是正确的,一张生成的图片是无法辨别方向的,就只有在上传之前反转了. 首先我们借助exif-js可以实现相机镜头的读取,不支持IE10以下,也直接引用的js文件,可能这...

qq_45272329的博客 3243

前端图片压缩、方向纠正、预览、上传插件

原文链接: https://mp.weixin.qq.com/s/_erabW9UbiaIshH8YIR1Ow   前言 今天我们要讲解下如何编写一个图片压缩、方向纠正插件,附带着会讲解下如何上传和预览。 为什么重点放在图片压缩和方向纠正? 相信大家在做项目过程中,经常会遇到上传图片到后端,但是由于图片过大,需要对图片压缩处理。特别在移动端,手机拍的照片普遍过于大了,我们有时候只是需要上...

2201

移动端h5拍照压缩即时上传后台并预览

项目经理让迭代一个功能,实时预览并上传到后台的功能,听到这立马想起了几个第三方插件去实现,mui 和api cloude万万没想到的是这个app前面使用ios 和安卓原生写的,然后mui和api cloud里面都要配置文件,不能嵌入到app中,于是乎开始我的查询h5官方api之路。好在皇天不负有心人,终于让我弄出来了。 大致思路是这样的,首先用h5的input file 在拍照时或者...

weixin_30287169的博客 332
上一篇: mui 上拉刷新下拉加载
下一篇: nvm node版本管理工具安装
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值