国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

HTML5移動(dòng)開發(fā)圖片壓縮上傳功能

2019-10-26 17:42:07
字體:
供稿:網(wǎng)友

H5活動(dòng)已十分普遍,其中一種形式是讓用戶上傳圖片進(jìn)行參與。移動(dòng)端上傳圖片,用戶一般都是上傳手機(jī)相冊(cè)中的圖片,而現(xiàn)在手機(jī)的拍攝質(zhì)量越來越高,一般單張照片的尺寸都在3M左右。若直接上傳,十分耗流量,并且體驗(yàn)效果也不佳。因此需要在上傳之前,先進(jìn)行本地壓縮。

接下來總結(jié)在h5活動(dòng)的開發(fā)中圖片壓縮上傳的功能,并標(biāo)記其中踩過的幾個(gè)坑,分享給大家:

小白區(qū)必看

對(duì)于移動(dòng)端圖片上傳毫無概念的話,需要補(bǔ)充FileReader、Blob、FormData三個(gè)概念。

1.FileReader

定義

使用FileReader對(duì)象,web應(yīng)用程序可以異步的讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或者原始數(shù)據(jù)緩沖)內(nèi)容,可以使用File對(duì)象或者Blob對(duì)象來指定所要處理的文件或數(shù)據(jù).

方法

事件處理程序

使用

var fileReader = new FileReader();fileReader.onload = function() { var url = this.result;}//orfileReader.onload = function(e) { var url = e.target.result;}

2.Blob

BLOB(binary large object),二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。

3.FormData

利用FormData對(duì)象,你可以使用一系列的鍵值對(duì)來模擬一個(gè)完整的表單,然后使用XMLHttpRequest發(fā)送這個(gè)”表單”.

正題

移動(dòng)端圖片壓縮上傳過程:

1)input file上傳圖片,使用FileReader讀取用戶上傳的圖片;

2)圖片數(shù)據(jù)傳入img對(duì)象,將img繪制到canvas上,再使用canvas.toDataURL進(jìn)行壓縮;

3)獲取壓縮后的base64格式圖片數(shù)據(jù),轉(zhuǎn)成二進(jìn)制,塞入formdata,最后通過xmlHttpRequest提交formdata;

1.獲取圖片數(shù)據(jù)

fileEle.onchange = function() { if (!this.files.length) return; //以下考慮的是單圖情況 var _ua = window.navigator.userAgent; var _simpleFile = this.files[0]; //判斷是否為圖片 if (!///(?:jpeg|png|gif)/i.test(_simpleFile.type)) return; //插件exif.js獲取ios圖片的方向信息 var _orientation; if(_ua.indexOf('iphone') > 0) { EXIF.getData(_simpleFile,function(){ _orientation=EXIF.getTag(this,'Orientation'); }); } //1.讀取文件,通過FileReader,將圖片文件轉(zhuǎn)化為DataURL,即data:img/png;base64,開頭的url,可以直接放在image.src中; var _reader = new FileReader(), _img = new Image(), _url; _reader.onload = function() { _url = this.result; _img.url = _url; _img.onload = function () { var _data = compress(_img); uploadPhoto(_data, _orientation); }; }; _reader.readAsDataURL(_simpleFile);};
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 平阳县| 铁岭市| 百色市| 宜良县| 曲周县| 郓城县| 丰原市| 从江县| 四平市| 连江县| 龙游县| 开化县| 开原市| 商南县| 长沙市| 定边县| 武汉市| 井冈山市| 大化| 政和县| 叙永县| 镇宁| 襄城县| 板桥市| 安陆市| 红原县| 景谷| 崇明县| 栖霞市| 静海县| 清徐县| 财经| 郴州市| 阜南县| 唐海县| 正蓝旗| 永平县| 许昌县| 嘉峪关市| 得荣县| 鄂伦春自治旗|