摘要:關于移動端拍照上傳圖片的解決方案場景產(chǎn)品要求用戶拍一張身份證和一張人像,然后后臺調(diào)用商用接口比對證件和人像的匹配度。缺點手機拍照圖片過大,壓縮后,圖片依然大,沒上傳一次花費時間過長,最后再調(diào)用接口比對時間花費也長。
關于移動端拍照上傳圖片的解決方案
場景
產(chǎn)品要求用戶拍一張身份證和一張人像,然后后臺php調(diào)用商用接口比對證件和人像的匹配度。方案1:使用上傳插件web-upload
缺點證件和人像分別上傳到后臺,然后返回圖片地址,前端回顯。
點擊核驗按鈕,ajax再將返回的圖片地址傳到后臺,后臺將地址轉(zhuǎn)成bases64,調(diào)用接口比對,返回結果。
手機拍照圖片過大,webupload壓縮后,圖片依然大,沒上傳一次花費時間過長,最后再調(diào)用接口比對時間花費也長。
webupload的樣式需要重新定義
.webuploader-pick { display: inline-block; width: 1.6rem; height: 1.6rem; position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); background-color: transparent; }
方案2:使用原生的H5對象完成上傳webupload的input框沒辦法限制用戶只能調(diào)用攝像頭。(webupload加載完成后會生成一個input框,但是頁面加載后不能重新給input添加屬性,只有在上傳中才能獲取到).
缺點用戶點擊input按鈕,調(diào)用FileReader對象生成file.
利用canvas壓縮圖片,context進行繪圖回顯。
再將base64碼dataURL轉(zhuǎn)為file.
利用FormData對象追加file.發(fā)送后臺。
后臺$_FILES接受后,轉(zhuǎn)為base64發(fā)送到接口,獲取結果。
1.流程稍顯復雜。
2.兼容性問題。
// 掃描身份證 $(".input-card").on("change", function () { var oFReader = new FileReader(); var card_files = document.getElementById("card-file").files[0]; oFReader.readAsDataURL(card_files); oFReader.onloadend = function (oFRevent) { img = new Image(); img.src = oFRevent.target.result; img.onload = function () { // 獲取照片信息 等于6時照片會旋轉(zhuǎn)90° var photo = getPhotoOrientation(img); // 壓縮圖片 var compress_data = compress(img); // 將圖片url轉(zhuǎn)為file類型 (直接base64傳到后臺始終太大了) card_img_file = dataURLtoFile(compress_data, "img.png"); $(".crad-img").attr("src", img.src); //$("#compress_card").attr("src", imgfile); } // 太大就進行壓縮 } }) // 圖片壓縮 function compress(img) { canvas.width = img.width canvas.height = img.height //利用canvas進行繪圖 context.drawImage(img, 0, 0); // 重要 //將原來圖片的質(zhì)量壓縮到原先的0.2倍。 var data = canvas.toDataURL("image/jpeg", 0.1) //data url的形式 return data } // base64 轉(zhuǎn)file function dataURLtoFile(dataurl, filename) { var arr = dataurl.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], filename, { type: mime }); } //獲取照片的元信息(拍攝方向) function getPhotoOrientation(img) { var orient; EXIF.getData(img, function () { orient = EXIF.getTag(this, "Orientation"); }); return orient; } //確定核驗 $("#saveDate").on("click", function () { var _token = $("meta[name="csrf-token"]").attr("content"); var formData = new FormData(); formData.append("_token", _token); // 追加token formData.append("order_room_id", order_room_id); // 追加其他項目參數(shù) formData.append("face_img_file", face_img_file); // 追加文件 formData.append("card_img_file", card_img_file); msg = layer.open({ type: 2, content: "核驗中" }); $.ajax({ url: "/check-in/ajax-real", type: "post", data: formData, cache: false, processData: false, // 必填參數(shù) contentType: false, // 必填參數(shù) async: false, dataType: "json", success: function (data) { layer.close(msg); if (data.status == "success") { layer.open({ content: data.msg, skin: "msg", time: 2, end: function (layero, index) { // 跳轉(zhuǎn)table頁 window.location.href = "{{Route("check.table",["num"=>$total_num,"order_room_id"=>$order_room_id])}}"; } }); } else { layer.open({ content: data.msg, skin: "msg", time: 3 }); } } }); })
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31445.html
摘要:在微信端打開手機攝像頭拍照,將拍照圖片保存到服務器上需要使用到微信的接口,主要使用到了拍照或從手機相冊中選圖接口上傳圖片接口參考資料一引入微信二通過接口注入權限驗證配置三微信端拍照接口默認可以指定是原圖還是壓縮圖,默認二者都有可以指 在微信端打開手機攝像頭拍照,將拍照圖片保存到服務器上需要使用到微信的JSSDK接口,主要使用到了拍照或從手機相冊中選圖接口(chooseImage),上傳...
摘要:上傳的文件經(jīng)過就可以實現(xiàn)預覽圖片了,這方面不清楚的可以查看進階系列文件上傳下載旋轉(zhuǎn)旋轉(zhuǎn)需要用到的方法。 前言 在手機上通過網(wǎng)頁 input 標簽拍照上傳圖片,有一些手機會出現(xiàn)圖片旋轉(zhuǎn)了90度d的問題,包括 iPhone 和個別三星手機。這些手機豎著拍的時候才會出現(xiàn)這種問題,橫拍出來的照片就正常顯示。因此,可以通過獲取手機拍照角度來對照片進行旋轉(zhuǎn),從而解決這個問題。 Orientatio...
摘要:拍照預覽壓縮上傳采坑記錄公司項目前段時間需要實現(xiàn)手機拍照上傳的功能,本來以為用和可以很輕松的實現(xiàn),結果發(fā)現(xiàn)問題多多,特此記錄下來。完整代碼如下如果不支持壓縮,直接上傳原始圖片組裝二進制組裝參考文章 H5拍照、預覽、壓縮、上傳采坑記錄 公司項目前段時間需要實現(xiàn)手機拍照上傳的功能,本來以為用createObjectURL和canvas可以很輕松的實現(xiàn),結果發(fā)現(xiàn)問題多多,特此記錄下來。 DE...
閱讀 3231·2021-11-25 09:43
閱讀 3444·2021-11-11 16:54
閱讀 875·2021-11-02 14:42
閱讀 3794·2021-09-30 09:58
閱讀 3717·2021-09-29 09:44
閱讀 1326·2019-08-30 15:56
閱讀 2128·2019-08-30 15:54
閱讀 3017·2019-08-30 15:43