本技術(shù)涉及圖片加載,特別是涉及一種圖片加載方法和裝置。
背景技術(shù):
1、隨著數(shù)據(jù)可視化分析大屏的推廣,以及硬件設(shè)備分辨率的逐步提高,對(duì)圖片素材的精度及質(zhì)量的要求也隨之提高了。這就導(dǎo)致圖片素材體積增大,圖片加載的耗時(shí)增長(zhǎng)?,F(xiàn)階段一般是通過(guò)壓縮圖片、使用瀏覽器緩存圖片等手段優(yōu)化圖片加載性能。
2、針對(duì)圖片的壓縮方式通常有兩種,分別是有損壓縮和無(wú)損壓縮。有損壓縮導(dǎo)致圖片中某些數(shù)據(jù)被有意地刪除,且被刪除的數(shù)據(jù)不再恢復(fù)。有損壓縮方法利用了人類(lèi)視覺(jué)感知的局限性,如對(duì)某些頻率的不敏感性和對(duì)時(shí)間上的容忍度,來(lái)減少數(shù)據(jù)的大小,如此來(lái)實(shí)現(xiàn)較高的壓縮比,但有損壓縮方法會(huì)影響到圖片數(shù)據(jù)的最終呈現(xiàn)質(zhì)量,尤其是在高分辨率渲染或?qū)D片應(yīng)用到專(zhuān)業(yè)用途時(shí),這種圖片質(zhì)量的損失會(huì)更加明顯。無(wú)損壓縮保證了原始數(shù)據(jù)的完整性,在解壓縮后能夠完全恢復(fù),缺點(diǎn)是獲得的壓縮比有限。
3、瀏覽器緩存圖片的目的是為了節(jié)約網(wǎng)絡(luò)的資源,實(shí)現(xiàn)圖片的加速瀏覽。瀏覽器在用戶(hù)磁盤(pán)上對(duì)最近請(qǐng)求過(guò)的圖片進(jìn)行存儲(chǔ),當(dāng)訪問(wèn)者再次請(qǐng)求訪問(wèn)這個(gè)圖片時(shí),瀏覽器就可以從用戶(hù)磁盤(pán)中讀取圖片,這樣就可以加速圖片的閱覽。
4、以上提供的圖片加載方法難以顧全圖片質(zhì)量、壓縮比和讀取速度的問(wèn)題。目前有待提出一種能夠兼顧上述多方面要求的圖片加載方法,以提升圖片加載的總和性能。
技術(shù)實(shí)現(xiàn)思路
1、基于上述問(wèn)題,本技術(shù)提供了一種圖片加載方法和裝置,目的是提升圖片加載的性能。
2、本技術(shù)實(shí)施例公開(kāi)了如下技術(shù)方案:
3、本技術(shù)第一方面提供了一種圖片加載方法,該方法包括:
4、接收客戶(hù)端上傳的圖片,并確定所述圖片的資源大??;
5、根據(jù)所述圖片的資源大小所屬的資源量區(qū)間,以及多種資源量區(qū)間與圖片類(lèi)別的對(duì)應(yīng)關(guān)系,對(duì)所述圖片進(jìn)行分類(lèi);
6、若所述圖片的類(lèi)別為第一類(lèi)別,將所述圖片自動(dòng)裁切為多個(gè)子圖片;其中,所述第一類(lèi)別為最大的資源量區(qū)間對(duì)應(yīng)的圖片類(lèi)別;
7、將所述多個(gè)子圖片提供給所述客戶(hù)端,以使所述客戶(hù)端緩存所述多個(gè)子圖片并執(zhí)行圖片加載操作;其中,所述客戶(hù)端緩存所述多個(gè)子圖片的方式為基于所述子圖片的資源大小確定的;所述客戶(hù)端執(zhí)行所述圖片加載操作的方式為基于所加載的圖片的資源大小確定的。
8、所述第一類(lèi)別對(duì)應(yīng)的資源量區(qū)間為[10mb,+∞);所述方法還包括:
9、若所述圖片的類(lèi)別為第二類(lèi)別,將所述圖片自動(dòng)有損壓縮生成縮略圖;所述第二類(lèi)別對(duì)應(yīng)的資源量區(qū)間為[1mb,10mb);
10、若所述圖片的類(lèi)別為第三類(lèi)別,且所述圖片的資源大小在(0,500kb)區(qū)間內(nèi),則不壓縮所述圖片;
11、若所述圖片的類(lèi)別為第三類(lèi)別,且所述圖片的資源大小在[500kb,1mb)區(qū)間內(nèi),則將所述圖片進(jìn)行無(wú)損壓縮;所述第三類(lèi)別對(duì)應(yīng)的資源量區(qū)間為(0,1mb)。
12、所述客戶(hù)端緩存所述多個(gè)子圖片的方式為:
13、判斷子圖片的資源大小是否在[1mb,10mb)區(qū)間內(nèi),若是,采用客戶(hù)端的內(nèi)存數(shù)據(jù)庫(kù)緩存的方式緩存子圖片;
14、若否,則采用客戶(hù)端的瀏覽器緩存和磁盤(pán)緩存的方式緩存子圖片。
15、在可選地實(shí)現(xiàn)方式中,所述客戶(hù)端緩存所述圖片的方式還包括:
16、若所述圖片的類(lèi)別為第二類(lèi)別,將所述圖片提供給所述客戶(hù)端,以使所述客戶(hù)端緩存所述圖片并執(zhí)行圖片加載操作;
17、采用客戶(hù)端的內(nèi)存數(shù)據(jù)庫(kù)緩存的方式緩存所述圖片的原圖,并采用瀏覽器緩存和磁盤(pán)緩存的方式緩存所述圖片的縮略圖;
18、若所述圖片的類(lèi)別為第三類(lèi)別,將所述圖片提供給所述客戶(hù)端,以使所述客戶(hù)端根據(jù)所述圖片的資源大小確定是否進(jìn)行緩存,并執(zhí)行圖片加載操作;其中,若所述圖片的資源大小在(0,500kb)區(qū)間內(nèi),則由所述客戶(hù)端采用瀏覽器緩存和磁盤(pán)緩存的方式緩存所述圖片;若所述圖片的資源大小在[500kb,1mb)區(qū)間內(nèi),則將所述圖片進(jìn)行無(wú)損壓縮后,由所述客戶(hù)端采用瀏覽器緩存和磁盤(pán)緩存的方式緩存無(wú)損壓縮后的圖片。
19、所述客戶(hù)端執(zhí)行所述圖片加載操作的方式為:
20、并行讀取客戶(hù)端的內(nèi)存數(shù)據(jù)庫(kù)的多條區(qū)塊資源,以確定內(nèi)存數(shù)據(jù)庫(kù)是否命中所述多個(gè)子圖片;
21、若是,則從所述多條區(qū)塊資源中加載所述多個(gè)子圖片。
22、在可選地實(shí)現(xiàn)方式中,所述客戶(hù)端執(zhí)行所述圖片加載操作的方式還包括:
23、若所述圖片的類(lèi)別為第二類(lèi)別,所述客戶(hù)端在客戶(hù)端的內(nèi)存數(shù)據(jù)庫(kù)、瀏覽器內(nèi)存以及磁盤(pán)內(nèi)存中并行讀取所述圖片的原圖和縮略圖,判斷緩存介質(zhì)命中與否,若命中,先加載縮略圖再加載原圖;
24、若所述圖片的類(lèi)別為第三類(lèi)別,所述客戶(hù)端在客戶(hù)端的瀏覽器內(nèi)存和磁盤(pán)內(nèi)存中讀取所述圖片,判斷緩存介質(zhì)命中與否,若命中,直接加載所述圖片。
25、在可選地實(shí)現(xiàn)方式中,所述圖片加載方法還包括:
26、所述服務(wù)端存儲(chǔ)所述客戶(hù)端上傳的圖片以及所述圖片的處理結(jié)果;
27、所述服務(wù)端響應(yīng)于所述客戶(hù)端的圖片資源讀取請(qǐng)求,向所述客戶(hù)端提供與所述圖片資源讀取請(qǐng)求對(duì)應(yīng)的圖片;所述圖片資源讀取請(qǐng)求為所述客戶(hù)端在緩存介質(zhì)中未命中圖片資源的條件下生成并發(fā)送給所述服務(wù)端的。
28、本技術(shù)第二方面提供了又一種圖片加載方法,該方法包括:
29、向服務(wù)端上傳圖片,以使所述服務(wù)端根據(jù)所述圖片的資源大小所屬的資源量區(qū)間,以及多種資源量區(qū)間與圖片類(lèi)別的對(duì)應(yīng)關(guān)系,對(duì)所述圖片進(jìn)行分類(lèi);
30、接收所述服務(wù)端對(duì)所述圖片的分類(lèi)結(jié)果,若所述圖片為第一類(lèi)別,緩存所述圖片經(jīng)過(guò)所述服務(wù)端自動(dòng)裁切后生成的多個(gè)子圖片;其中,緩存所述多個(gè)子圖片的方式為基于所述子圖片的資源大小確定的;所述第一類(lèi)別為最大的資源量區(qū)間對(duì)應(yīng)的圖片類(lèi)別;
31、基于緩存的多個(gè)子圖片執(zhí)行圖片加載操作;其中,所述圖片加載操作的方式為基于所加載的圖片的資源大小確定的。
32、緩存所述圖片經(jīng)過(guò)所述服務(wù)端自動(dòng)裁切后生成的子圖片的方式為:
33、判斷子圖片的資源大小是否在[1mb,10mb)區(qū)間內(nèi),若是,采用內(nèi)存數(shù)據(jù)庫(kù)緩存的方式緩存子圖片;
34、若否,則采用瀏覽器緩存和磁盤(pán)緩存的方式緩存子圖片
35、所述第一類(lèi)別對(duì)應(yīng)的資源量區(qū)間為[10mb,+∞);所述方法還包括:
36、若所述圖片為第二類(lèi)別,采用內(nèi)存數(shù)據(jù)庫(kù)緩存的方式緩存所述圖片的原圖,采用瀏覽器緩存和磁盤(pán)緩存的方式緩存所述圖片的縮略圖;所述第二類(lèi)別對(duì)應(yīng)的資源量區(qū)間為[1mb,10mb);所述縮略圖為所述服務(wù)端對(duì)所述第二類(lèi)別的圖片進(jìn)行自動(dòng)有損壓縮后生成的;
37、若所述圖片為第三類(lèi)別,且所述圖片的資源大小在(0,500kb)區(qū)間內(nèi),則采用瀏覽器緩存和磁盤(pán)緩存的方式緩存所述圖片;若所述圖片的類(lèi)別為第三類(lèi)別,且所述圖片的資源大小在[500kb,1mb)區(qū)間內(nèi),則采用瀏覽器緩存和磁盤(pán)緩存的方式緩存由所述服務(wù)端對(duì)所述圖片進(jìn)行無(wú)損壓縮后的圖片;所述第三類(lèi)別對(duì)應(yīng)的資源量區(qū)間為(0,1mb)。
38、所述基于緩存的多個(gè)子圖片執(zhí)行圖片加載操作,包括:
39、并行讀取客戶(hù)端的內(nèi)存數(shù)據(jù)庫(kù)的多條區(qū)塊資源,以確定內(nèi)存數(shù)據(jù)庫(kù)是否命中所述多個(gè)子圖片;
40、若是,則從所述多條區(qū)塊資源中加載所述多個(gè)子圖片。
41、在可選地實(shí)現(xiàn)方式中,所述基于緩存的多個(gè)子圖片執(zhí)行圖片加載操作還包括:
42、若所述圖片的類(lèi)別為第二類(lèi)別,在內(nèi)存數(shù)據(jù)庫(kù)、瀏覽器內(nèi)存以及磁盤(pán)內(nèi)存中并行讀取所述圖片的原圖和所述圖片的縮略圖,判斷緩存介質(zhì)命中與否,若命中,先加載縮略圖再加載原圖;
43、若所述圖片的類(lèi)別為第三類(lèi)別,在瀏覽器緩存和磁盤(pán)緩存中讀取所述圖片,判斷緩存介質(zhì)命中與否,若命中,直接加載所述圖片。
44、所述服務(wù)端存儲(chǔ)有所述客戶(hù)端上傳的圖片以及所述圖片的處理結(jié)果;所述方法還包括:
45、若在緩存介質(zhì)中未命中圖片資源,則向所述服務(wù)端發(fā)送圖片資源讀取請(qǐng)求;
46、接收所述服務(wù)端提供的與所述圖片資源讀取請(qǐng)求對(duì)應(yīng)的圖片;
47、根據(jù)所述服務(wù)端提供的與所述圖片資源讀取請(qǐng)求對(duì)應(yīng)的圖片,執(zhí)行圖片加載操作和緩存操作。
48、本技術(shù)第三方面提供了一種圖片加載裝置,該裝置包括:
49、圖片接收模塊,用于接收客戶(hù)端上傳的圖片,并確定所述圖片的資源大??;
50、圖片類(lèi)別確定模塊,用于根據(jù)所述圖片的資源大小所屬的資源量區(qū)間,以及多種資源量區(qū)間與圖片類(lèi)別的對(duì)應(yīng)關(guān)系,對(duì)所述圖片進(jìn)行分類(lèi);
51、圖片處理模塊,用于若所述圖片的類(lèi)別為第一類(lèi)別,將所述圖片自動(dòng)裁切為多個(gè)子圖片;其中,所述第一類(lèi)別為最大的資源量區(qū)間對(duì)應(yīng)的圖片類(lèi)別;
52、圖片發(fā)送模塊,用于將所述多個(gè)子圖片提供給所述客戶(hù)端,以使所述客戶(hù)端緩存所述多個(gè)子圖片并執(zhí)行圖片加載操作;其中,所述客戶(hù)端緩存所述多個(gè)子圖片的方式為基于所述子圖片的資源大小確定的;所述客戶(hù)端執(zhí)行所述圖片加載操作的方式為基于所加載的圖片的資源大小確定的。
53、本技術(shù)第四方面提供了又一種圖片加載裝置,該裝置包括:
54、圖片上傳模塊,用于向服務(wù)端上傳圖片,以使所述服務(wù)端根據(jù)所述圖片的資源大小所屬的資源量區(qū)間,以及多種資源量區(qū)間與類(lèi)別的對(duì)應(yīng)關(guān)系,對(duì)所述圖片進(jìn)行分類(lèi);
55、圖片緩存模塊,用于接收所述服務(wù)端對(duì)所述圖片的分類(lèi)結(jié)果,若所述圖片為第一類(lèi)別,緩存所述圖片經(jīng)過(guò)所述服務(wù)端自動(dòng)裁切后生成的子圖片;其中,緩存所述子圖片的方式為基于所述子圖片的資源大小確定的;所述第一類(lèi)別為最大的資源量區(qū)間對(duì)應(yīng)的圖片類(lèi)別;
56、圖片加載模塊,用于基于緩存的多個(gè)子圖片執(zhí)行圖片加載操作;其中,所述圖片加載操作的方式為基于所加載的圖片的資源大小確定的。
57、相較于現(xiàn)有技術(shù),本技術(shù)具有以下有益效果:
58、服務(wù)端接收到圖片之后,首先根據(jù)圖片的資源大小將其分類(lèi),然后根據(jù)類(lèi)別對(duì)圖片做出相應(yīng)的處理,并將原始圖片以及處理后的圖片發(fā)送回客戶(hù)端進(jìn)行緩存和加載。根據(jù)實(shí)際情況對(duì)圖片大小進(jìn)行分類(lèi),對(duì)不同類(lèi)別的圖片采取例如自動(dòng)裁切、壓縮等不同的優(yōu)化措施,并對(duì)圖片及其優(yōu)化后的圖片進(jìn)行相應(yīng)的緩存和加載,均衡圖片優(yōu)化代價(jià)和提升圖片加載性能,同時(shí)可以更有效地管理存儲(chǔ)空間,提高資源利用率;將大資源圖片自動(dòng)裁切為多個(gè)子圖片進(jìn)行緩存和加載,能夠在保持圖片高精度的情況下,簡(jiǎn)化大資源圖片的處理過(guò)程,并通過(guò)相應(yīng)的緩存方式和加載方式提升了圖片加載的流暢性,提升用戶(hù)體驗(yàn)。