国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

H5拍照、預(yù)覽、壓縮、上傳采坑記錄

gself / 2885人閱讀

摘要:拍照預(yù)覽壓縮上傳采坑記錄公司項目前段時間需要實現(xiàn)手機(jī)拍照上傳的功能,本來以為用和可以很輕松的實現(xiàn),結(jié)果發(fā)現(xiàn)問題多多,特此記錄下來。完整代碼如下如果不支持壓縮,直接上傳原始圖片組裝二進(jìn)制組裝參考文章

H5拍照、預(yù)覽、壓縮、上傳采坑記錄

公司項目前段時間需要實現(xiàn)手機(jī)拍照上傳的功能,本來以為用createObjectURL和canvas可以很輕松的實現(xiàn),結(jié)果發(fā)現(xiàn)問題多多,特此記錄下來。

DEMO預(yù)覽(需用新標(biāo)簽頁打開)

圖片預(yù)覽

在IOS上,豎著拍照片時,圖片預(yù)覽會旋轉(zhuǎn)90°,橫著拍照就沒問題,我實驗了一下,在IOS上,只有當(dāng)圖片的分辨率過大會出現(xiàn)這種情況。

最后實現(xiàn)圖片預(yù)覽效果借助了exif-js和megapix-image,exif-js負(fù)責(zé)讀取圖片的EXIF信息,獲取orientation信息,然后用megapix-image把圖片數(shù)據(jù)渲染在img標(biāo)簽上,代碼如下:

import EXIF from "../utils/exif";
import MegaPixImage from "../utils/megapix-image";
     /**
     * 
     * @param file file對象
     * @param resImg 預(yù)覽IMG標(biāo)簽
     * @returns {Promise}
     */
    renderPreviewImg(file, resImg) {
        return new Promise(function (resolve, reject) {
            EXIF.getData(file, _=> {
                var allMetaData = EXIF.getAllTags(file);
                var orientation = allMetaData.Orientation;

                var mpImg = new MegaPixImage(file);

                mpImg.render(resImg, {
                    maxWidth: 1024,
                    maxHeight: 1024,
                    // quality: 0.6,
                    orientation: orientation
                }, resolve);

            });
        });


    }
無刷新壓縮上傳

思路有兩種:

用canvas的toDataURL()API,直接將base64文本傳遞過去

自己構(gòu)造File對象,ajax上傳

第一種方法需要服務(wù)器端做工作,而且上傳數(shù)據(jù)量會增大4/3,因此此方法只作為回退方案。

第二種方法的原理是用Uint8Array來構(gòu)造Blob,再使用formData上傳。
這里要注意的是:ArrayBuffer不能被直接操作,必須通過typed array來存取,而且Blob的構(gòu)造函數(shù)也是typed array

完整代碼如下:

     this.renderPreviewImg(file, resImg)
            .then(() => {

                try {
                    var binaryData = null;

                    if (!Blob || !ArrayBuffer || !Uint8Array) {
                        // alert(123);
                        binaryData = file;//如果不支持壓縮,直接上傳原始圖片

                    } else {
                        //組裝二進(jìn)制
                        var base64Data = $(resImg).attr("src");
                        var byteString = atob(base64Data.split(",")[1]);
                        var ab = new ArrayBuffer(byteString.length);
                        var ia = new Uint8Array(ab);
                        for (var i = 0; i < byteString.length; i++) {
                            ia[i] = byteString.charCodeAt(i);
                        }
                        binaryData = new Blob([ia], {
                            "type": file.type
                        });

                    }

                    this.setState({
                        uploadProgress: 0
                    });

                    //組裝formData
                    var fd = new FormData();
                    fd.append("file", binaryData, "img.jpg");
                    fd.append("token", uploadToken);

                    console.log(fd);

                    return this.uploadBinaryDataToQiniu(fd, this.uploadSuccess.bind(this), this.handleUploadProgress.bind(this))


                } catch (e) {
                    alert(e.message);
                }
            }).catch(function (e) {
            console.log(e);
        })
參考文章

http://tgideas.qq.com/webplat...

http://blog.csdn.net/hsany330...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81382.html

相關(guān)文章

  • H5拍照、選擇圖片上傳組件核心

    摘要:決定自己寫一個移動端圖片上傳組件。允許多選,加上事件的回調(diào)函數(shù)。在的回調(diào)函數(shù)中,我們能通過拿到所選擇的文件,但是文件是無法展示在頁面上的,通常的做法是使用轉(zhuǎn)為然后展示在頁面上。 背景 前段時間項目重構(gòu),改成SSR的項目,但之前用的圖片選擇上傳組件不支持SSR(server-side-render)。遂進(jìn)行了調(diào)研,發(fā)現(xiàn)很多的工具。但有的太大,有的使用麻煩,有的不滿足使用需求。決定自己寫一...

    Guakin_Huang 評論0 收藏0
  • 關(guān)于手機(jī)端拍照上傳圖片的問題

    摘要:關(guān)于移動端拍照上傳圖片的解決方案場景產(chǎn)品要求用戶拍一張身份證和一張人像,然后后臺調(diào)用商用接口比對證件和人像的匹配度。缺點(diǎn)手機(jī)拍照圖片過大,壓縮后,圖片依然大,沒上傳一次花費(fèi)時間過長,最后再調(diào)用接口比對時間花費(fèi)也長。 關(guān)于移動端拍照上傳圖片的解決方案 場景 產(chǎn)品要求用戶拍一張身份證和一張人像,然后后臺php調(diào)用商用接口比對證件和人像的匹配度。showImg(https://segment...

    jifei 評論0 收藏0

發(fā)表評論

0條評論

gself

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<