本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法及系統(tǒng)。
背景技術(shù):
國(guó)家工信部、公安部規(guī)定,所有物聯(lián)網(wǎng)流量卡都必須進(jìn)行實(shí)名驗(yàn)證,實(shí)名認(rèn)證系統(tǒng)是一個(gè)獨(dú)立的框架,圖片上傳只是其中的一小部分環(huán)節(jié),系統(tǒng)架構(gòu)是由客戶端軟件、文件系統(tǒng)、緩存系統(tǒng)、消息隊(duì)列和實(shí)名識(shí)別系統(tǒng)組成的??蛻舳擞形⑿虐婧蚢pp版,文件系統(tǒng)負(fù)責(zé)圖片文件存儲(chǔ)、二次壓縮、cdn加速和主從備份方案;緩存系統(tǒng)主要實(shí)現(xiàn)用戶數(shù)據(jù)的緩存,解決對(duì)數(shù)據(jù)庫(kù)高頻繁讀寫(xiě)i/o壓力,通過(guò)把熱數(shù)據(jù)放在內(nèi)存來(lái)讀寫(xiě),每天定時(shí)集中寫(xiě)庫(kù)的機(jī)制;消息隊(duì)列為了解決客戶端實(shí)名申請(qǐng)異步處理審核機(jī)制,按先進(jìn)先出的方式調(diào)取審核任務(wù)接口,每筆處理完把結(jié)果推送給用戶;實(shí)名識(shí)別系統(tǒng)是利用了印刷圖文識(shí)別技術(shù)對(duì)身份證號(hào)碼、姓名進(jìn)行識(shí)別,再與用戶提交上來(lái)的數(shù)據(jù)進(jìn)行校驗(yàn),一致就認(rèn)為通過(guò),不一致就不通過(guò),不通過(guò)的申請(qǐng)都會(huì)丟到客服系統(tǒng),人工對(duì)數(shù)據(jù)撿漏處理。
為了實(shí)現(xiàn)客戶的自助實(shí)名,需要上傳照片進(jìn)行驗(yàn)證,在物聯(lián)網(wǎng)卡實(shí)名的過(guò)程中,需要上傳身份證照片驗(yàn)證,由于現(xiàn)在的手機(jī)像素越來(lái)越高,導(dǎo)致圖片越來(lái)越大,上傳時(shí)間變長(zhǎng),如果網(wǎng)絡(luò)質(zhì)量不好很可能會(huì)出現(xiàn)上傳超時(shí)等不利情況,造成上傳失敗。
也就是說(shuō),現(xiàn)有的圖片上傳方式基本都是原圖上傳,如果圖片過(guò)大或者網(wǎng)絡(luò)質(zhì)量不好,出現(xiàn)上傳超時(shí)等異常情況的幾率大大提升,且流量耗用也大幅增加。
因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)中物聯(lián)網(wǎng)流量卡上傳方式容易上傳失敗、流量耗用大等問(wèn)題。
本發(fā)明的技術(shù)方案如下:
一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法,其中,包括步驟:
a、獲取物聯(lián)網(wǎng)流量卡的實(shí)名照片,并將實(shí)名照片轉(zhuǎn)化為base64字符串;
b、新建或查找已創(chuàng)建的canvas標(biāo)簽并同比渲染base64字符串形成渲染圖片;
c、通過(guò)canvas內(nèi)置的方法,對(duì)渲染圖片進(jìn)行壓縮;
d、將壓縮后的渲染圖片通過(guò)接口傳輸至后端。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法,其中,所述步驟a具體包括:
a1、首先獲取需要上傳的實(shí)名照片;
a2、通過(guò)onchange事件監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),新建一個(gè)filereader的實(shí)例對(duì)象,并通過(guò)該實(shí)例對(duì)象的readasdataurl方法將實(shí)名照片轉(zhuǎn)化為base64字符串。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法,其中,所述步驟b具體包括:
b1、通過(guò)canvas標(biāo)簽的標(biāo)簽id獲取到該canvas標(biāo)簽,并將其定位于窗口之外;
b2、使用getcontext生成一個(gè)canvas的2d環(huán)境;
b3、通過(guò)drawimage渲染出等比大小的圖片作為渲染圖片。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法,其中,所述步驟c具體包括:
c1、使用todataurl對(duì)渲染圖片進(jìn)行壓縮,壓縮后的質(zhì)量為原圖的50%-70%;
c2、獲取壓縮后的渲染圖片。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法,其中,所述步驟a之前,判斷需上傳的物聯(lián)網(wǎng)流量卡的實(shí)名照片是否為jpeg格式,則是進(jìn)入步驟a,否則直接上傳實(shí)名照片。
一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其中,包括:
轉(zhuǎn)化模塊,用于獲取物聯(lián)網(wǎng)流量卡的實(shí)名照片,并將實(shí)名照片轉(zhuǎn)化為base64字符串;
渲染模塊,用于新建或查找已創(chuàng)建的canvas標(biāo)簽并同比渲染base64字符串形成渲染圖片;
壓縮模塊,用于通過(guò)canvas內(nèi)置的方法,對(duì)渲染圖片進(jìn)行壓縮;
傳輸模塊,用于將壓縮后的渲染圖片通過(guò)接口傳輸至后端。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其中,所述轉(zhuǎn)化模塊具體包括:
實(shí)名照片獲取單元,用于首先獲取需要上傳的實(shí)名照片;
轉(zhuǎn)化單元,用于通過(guò)onchange事件監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),新建一個(gè)filereader的實(shí)例對(duì)象,并通過(guò)該實(shí)例對(duì)象的readasdataurl方法將實(shí)名照片轉(zhuǎn)化為base64字符串。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其中,所述渲染模塊具體包括:
定位單元,用于通過(guò)canvas標(biāo)簽的標(biāo)簽id獲取到該canvas標(biāo)簽,并將其定位于窗口之外;
生成單元,用于使用getcontext生成一個(gè)canvas的2d環(huán)境;
渲染單元,用于通過(guò)drawimage渲染出等比大小的圖片作為渲染圖片。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其中,所述壓縮模塊具體包括:
壓縮單元,用于使用todataurl對(duì)渲染圖片進(jìn)行壓縮,壓縮后的質(zhì)量為原圖的50%-70%;
渲染圖片獲取單元,用于獲取壓縮后的渲染圖片。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其中,還包括:
判斷模塊,用于判斷需上傳的物聯(lián)網(wǎng)流量卡的實(shí)名照片是否為jpeg格式,則是進(jìn)入轉(zhuǎn)化模塊,否則直接上傳實(shí)名照片。
有益效果:本發(fā)明在上傳前通過(guò)前段技術(shù)實(shí)現(xiàn)圖片壓縮,上傳壓縮后的圖片,既可以減少用戶的流量耗用,也可以縮短上傳時(shí)間并節(jié)約服務(wù)器資源。相比現(xiàn)有的技術(shù),本發(fā)明可以使實(shí)名認(rèn)證更加自動(dòng)化和流程化,減少人工處理的復(fù)雜度,和出錯(cuò)率。
附圖說(shuō)明
圖1為本發(fā)明一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法較佳實(shí)施例的流程圖。
圖2為本發(fā)明一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明提供一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
請(qǐng)參閱圖1,圖1為本發(fā)明一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳方法較佳實(shí)施例的流程圖,如圖所示,其包括步驟:
s1、獲取物聯(lián)網(wǎng)流量卡的實(shí)名照片,并將實(shí)名照片轉(zhuǎn)化為base64字符串;
s2、新建或查找已創(chuàng)建的canvas標(biāo)簽并同比渲染base64字符串形成渲染圖片;
s3、通過(guò)canvas內(nèi)置的方法,對(duì)渲染圖片進(jìn)行壓縮;
s4、將壓縮后的渲染圖片通過(guò)接口傳輸至后端。
通過(guò)本發(fā)明的方法,可以在上傳前實(shí)現(xiàn)圖片壓縮,上傳壓縮后的圖片,既可以減少用戶的流量耗用,也可以縮短上傳時(shí)間并節(jié)約服務(wù)器資源。
具體地,所述步驟s1具體包括:
s11、首先獲取需要上傳的實(shí)名照片;
s12、通過(guò)onchange事件監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),新建一個(gè)filereader的實(shí)例對(duì)象,并通過(guò)該實(shí)例對(duì)象的readasdataurl方法將實(shí)名照片轉(zhuǎn)化為base64字符串。
首先通過(guò)input標(biāo)簽file類型的功能讓用戶選擇需要上傳的物聯(lián)網(wǎng)流量卡的實(shí)名照片,從而獲取需要上傳的實(shí)名照片;前端通過(guò)onchange事件監(jiān)聽(tīng)該input標(biāo)簽的數(shù)據(jù)變化進(jìn)行處理,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),新建一個(gè)filereader的實(shí)例對(duì)象,并通過(guò)該實(shí)例對(duì)象的readasdataurl方法將實(shí)名照片轉(zhuǎn)化為dataurl(base64字符串)。
使用onload事件監(jiān)聽(tīng)文件是否讀取轉(zhuǎn)化完畢(即base64字符串是否轉(zhuǎn)化完成),jquery代碼示例如下
$(‘#file’).on(‘change’,function(){varfile=this.files[0];varfr=newfilereader();fr.readasdataurl(file);fr.onload=function(evt){varres=evt.taeget.result;//res="data:image/png;base64,ivborw0kggoaaaansuheugaaaauaaaafcayaaacnby"http://...}}}),可以從結(jié)果中獲取到圖片,也可以獲取到圖片格式。
進(jìn)一步,所述步驟s2具體包括:
s21、通過(guò)canvas標(biāo)簽的標(biāo)簽id獲取到該canvas標(biāo)簽,并將其定位于窗口之外;
s22、使用getcontext生成一個(gè)canvas的2d環(huán)境;
s23、通過(guò)drawimage渲染出等比大小的圖片作為渲染圖片。
上述步驟中,通過(guò)canvas(畫(huà)布)標(biāo)簽的標(biāo)簽id獲取到該canvas標(biāo)簽,如:<canvasid=’cavnvas’></canvas>,并將其定位于窗口之外,使用getcontext(‘2d’)生成一個(gè)canvas的2d環(huán)境,并通過(guò)drawimage(0,0,’100%’,’100%’,0,0),渲染出等比大小的圖片作為渲染圖片。
當(dāng)然,在進(jìn)行渲染時(shí),還檢測(cè)實(shí)名照片的大小,如果該實(shí)名照片大于1mb,則等比渲染在畫(huà)布上。
進(jìn)一步,所述步驟s3具體包括:
s31、使用todataurl對(duì)渲染圖片進(jìn)行壓縮,壓縮后的質(zhì)量為原圖的50%-70%;
s32、獲取壓縮后的渲染圖片。
上述步驟中,使用todataurl("image/jpeg",quality(注:這個(gè)值決定圖片的質(zhì)量,在0-1之間))對(duì)渲染圖片進(jìn)行壓縮,由于canvas的顯示目前只能實(shí)現(xiàn)jpeg格式圖片的壓縮,其他格式的圖片暫不處理,但在絕大多數(shù)的情況下可以進(jìn)行壓縮。
上述過(guò)程中,通過(guò)canvas內(nèi)置函數(shù)降低渲染圖片的清晰度,一般降為原圖的50%-70%,通過(guò)調(diào)取接口測(cè)試,使壓縮后的渲染圖片識(shí)別失敗率低于5%,從而達(dá)到縮小圖片的效果。
進(jìn)一步,所述步驟s1之前,判斷需上傳的物聯(lián)網(wǎng)流量卡的實(shí)名照片是否為jpeg格式,則是進(jìn)入步驟s1,否則直接上傳實(shí)名照片。即只針對(duì)jpeg格式的圖片進(jìn)行處理,其他格式直接上傳即可。
本發(fā)明還提供一種物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng)較佳實(shí)施例,如圖2所示,其包括:
轉(zhuǎn)化模塊100,用于獲取物聯(lián)網(wǎng)流量卡的實(shí)名照片,并將實(shí)名照片轉(zhuǎn)化為base64字符串;
渲染模塊200,用于新建或查找已創(chuàng)建的canvas標(biāo)簽并同比渲染base64字符串形成渲染圖片;
壓縮模塊300,用于通過(guò)canvas內(nèi)置的方法,對(duì)渲染圖片進(jìn)行壓縮;
傳輸模塊400,用于將壓縮后的渲染圖片通過(guò)接口傳輸至后端。
進(jìn)一步,所述轉(zhuǎn)化模塊100具體包括:
實(shí)名照片獲取單元,用于首先獲取需要上傳的實(shí)名照片;
轉(zhuǎn)化單元,用于通過(guò)onchange事件監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),新建一個(gè)filereader的實(shí)例對(duì)象,并通過(guò)該實(shí)例對(duì)象的readasdataurl方法將實(shí)名照片轉(zhuǎn)化為base64字符串。
進(jìn)一步,所述渲染模塊200具體包括:
定位單元,用于通過(guò)canvas標(biāo)簽的標(biāo)簽id獲取到該canvas標(biāo)簽,并將其定位于窗口之外;
生成單元,用于使用getcontext生成一個(gè)canvas的2d環(huán)境;
渲染單元,用于通過(guò)drawimage渲染出等比大小的圖片作為渲染圖片。
進(jìn)一步,所述壓縮模塊300具體包括:
壓縮單元,用于使用todataurl對(duì)渲染圖片進(jìn)行壓縮,壓縮后的質(zhì)量為原圖的50%-70%;
渲染圖片獲取單元,用于獲取壓縮后的渲染圖片。
所述的物聯(lián)網(wǎng)流量卡的實(shí)名照片上傳系統(tǒng),其還包括:
判斷模塊,用于判斷需上傳的物聯(lián)網(wǎng)流量卡的實(shí)名照片是否為jpeg格式,則是進(jìn)入轉(zhuǎn)化模塊,否則直接上傳實(shí)名照片。
關(guān)于上述模塊單元的技術(shù)細(xì)節(jié)在前面的方法中已有詳述,故不再贅述。
綜上所述,本發(fā)明在上傳前通過(guò)前段技術(shù)實(shí)現(xiàn)圖片壓縮,上傳壓縮后的圖片,既可以減少用戶的流量耗用,也可以縮短上傳時(shí)間并節(jié)約服務(wù)器資源。相比現(xiàn)有的技術(shù),本發(fā)明可以使實(shí)名認(rèn)證更加自動(dòng)化和流程化,減少人工處理的復(fù)雜度,和出錯(cuò)率。
應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。