博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5图片上传本地预览
阅读量:5082 次
发布时间:2019-06-13

本文共 1214 字,大约阅读时间需要 4 分钟。

在开发 H5 应用的时候碰到一个问题,

应用只需要一张小的缩略图,
而用户用手机上传的确是一张大图,
手机摄像机拍的图片好几 M,这可要浪费很多流量。

我们可以通过以下方式来解决。

获取图片

通过  获取图片。

var input = document.createElement('input');input.type = 'file';input.addEventListener('change', function() {  var file = this.files[0];});input.click();

预览图片

使用  或者  预览图片

var img = document.createElement('img');img.src = window.URL.createObjectURL(file);
var img = document.createElement("img");var reader = new FileReader();reader.onload = function(e) {  img.src = e.target.result;}reader.readAsDataURL(file);

使用 canvas 做缩略图

var canvas = document.createElement("canvas");var ctx = canvas.getContext("2d");var MAX_WIDTH = 800;var MAX_HEIGHT = 600;var width = img.width;var height = img.height;if (width > height) {  if (width > MAX_WIDTH) {    height *= MAX_WIDTH / width;    width = MAX_WIDTH;  }} else {  if (height > MAX_HEIGHT) {    width *= MAX_HEIGHT / height;    height = MAX_HEIGHT;  }}canvas.width = width;canvas.height = height;ctx.drawImage(img, 0, 0, width, height);

上传缩略图

canvas.toBlob(function(blob) {  var form = new FormData();  form.append('file', blob);  fetch('/api/upload', {method: 'POST', body: form});});

 

结语

toBlob的兼容性问题我们引用一下这个库就可以了 

 

转载于:https://www.cnblogs.com/zhouyangla/p/7975429.html

你可能感兴趣的文章
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
网卡流量检测.py
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>
第一阶段冲刺06
查看>>
十个免费的 Web 压力测试工具
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>