移动端文件上传和图片压缩

本文介绍了HTML5中在移动端调用相册和相机的使用,详细阐述了capture属性和accept属性的规范及兼容性问题。在安卓和iOS设备上,获取到的文件流可以通过File对象进行处理,包括转换为URL、Base64编码等。针对图片上传,文章提到了图片压缩的需求,特别是解决照片方向问题,推荐使用exif.js库。
摘要由CSDN通过智能技术生成

HTML5中,input 元素新增 accept,capture 属性可用于在手机端调用相册和相机。

  • accept 允许选择的文件类型。详情
  • capture 调用设备的摄像头或麦克风。详情

浏览器支持:Internet Explorer 10、Firefox、Opera、Chrome 和 Safari 6 都支持。
大致规范如下:

1.当 accept="image/*" 时,capture=“user” 调用前置照相机,capture=“其他值” 调用后置照相机。

2.当accept="video/*" 时,capture=“user” 调用前置录像机,capture=“其他值” 调用后置录像机。

3.当 accept="image/*,video/*,capture=“user” 调用前置摄像头,capture=“其他值” 调用后置摄像头,默认照相,可切换录像。

4.当 accept="audio/*" 时,capture=“任意值”,调用录音机。

5.当input没有 capture 时,根据 accppt 类型给出文件夹选项以及摄像头或者录音机选项。

6.input含有 multiple 时访问文件夹可勾选多文件,无 multiple 时都只能单文件。

7.accept 属性接受一个逗号分隔的 MIME 类型字符串, 如:
accept=“image/png” 或 accept=".png" 时,只接受 png 图片.
accept=“image/png, image/jpeg” 或 accept=".png, .jpg, .jpeg" 时,接受 PNG/JPEG 文件.
accept=“image/*” 时,接受任何图片文件类型.
accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"时,接受任何 MS Doc 文件类型.

<!-- 调用相机和图片库 -->
<input type="file" accept="image/*">  
<!-- 直接调用相机 -->                      
<input type="file" accept="image/*" capture="camera"> 
<!-- 调取视频录像 -->
<input type="file" accept="video/*" capture="camcorder"> 
<!-- 调取音频和文件库(ios中有差异) -->
<input type="file" accept="audio/*" capture="microphone">   
<!-- 图片多选 -->
<input type="file" multiple="multiple" accept="image/jpeg"/>

但是安卓 和 IOS 中调取相册和相机机制不同,安卓比较不遵守规范。如果手机端上传图片时,期望能同时吊起照相和图片库,可使用以下兼容方式:

<!-- 安卓 和 IOS 中吊起相机和图片库 --> 
<input type="file" accept="image/*"/>

不管是直接选择文件还是拍照等,得到的文件流资源都存放在 input 对象 files 属性里。该属性返回一个 FileList 对象,这个对象是一个包含了许多 File 文件的列表。

var inp = documrnt.getElementsByTagName('input')[0];
var file = inp.files[0];    //文件流对象

每个 File 对象包含了下列信息:

name: – 文件名.
lastModified: – UNIX timestamp 形式的最后修改时间.
lastModifiedDate: – Date 形式的最后修改时间.
size: – 文件的字节大小.
type: – DOMString 文件的 MIME 类型.


文件流(File 对象)常用处理方法

1.将 file 文件流转为 url(blob)地址。 window.URL || window.webkitURL

<img src="" id="img">
<input type="file" id="file">
<script>
var myURL = window.URL || window.webkitURL;      //兼容写法
var img = document.getElementById('img');
var file = document.getElementById('file')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移动端Vue Vant的Uploader组件可以很方便地实现上传、压缩和旋转图片功能。首先,我们需要在Vue项目中引入Vue Vant库,并在需要使用Uploader的组件中注册该组件。 在页面中使用Uploader组件时,我们可以设置相关的属性来实现功能需求。首先是上传图片功能,可以通过设置`action`属性来指定图片上传的后端接口地址。上传成功后,可以通过监听`@success`事件来处理上传成功的逻辑,例如显示上传成功的提示信息或者将上传成功的图片URL保存到数据库等。 对于压缩图片的功能,我们可以使用该组件提供的`beforeRead`方法来获取用户要上传的图片文件对象。然后,利用`HTMLCanvasElement`的`toBlob`方法对图片进行压缩,并将压缩后的图片对象传给Uploader组件进行上传。在压缩图片时,可以设置压缩的尺寸或者压缩的质量、压缩比等参数,以控制压缩后的图片大小适应实际需求。 要实现图片旋转的功能,我们可以利用`EXIF.js`库来读取图片的EXIF信息,获取图片的拍摄方向。然后,根据拍摄方向来确定图片需要旋转的角度,再借助`canvas`的`rotate`方法对图片进行旋转。旋转后的图片可以在`@success`事件触发后重新渲染到页面上,或者直接发送到后端进行保存。 总结来说,移动端Vue Vant的Uploader组件通过设置相关属性和监听事件,配合压缩工具和EXIF库,可以非常方便地实现图片上传、压缩和旋转功能,满足移动端图片处理的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值