本發(fā)明涉及軟件開(kāi)發(fā)領(lǐng)域,具體涉及一種圖片壓縮方法、系統(tǒng)和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、現(xiàn)如今上傳圖片的場(chǎng)景及處理方式一般有如下兩種:
2、第一種系統(tǒng)限制圖片大小和像素,并且系統(tǒng)不支持自動(dòng)壓縮。此時(shí)前端服務(wù)往往直接強(qiáng)制限制了圖片的大小。
3、第二種是系統(tǒng)只限制圖片大小不要求圖片分辨率,并且系統(tǒng)支持一定比例尺寸大小的自動(dòng)壓縮。用戶可直接上傳一定大小的圖片,系統(tǒng)服務(wù)根據(jù)要求自動(dòng)對(duì)圖片進(jìn)行一定范圍的大小壓縮。
4、上述現(xiàn)有技術(shù)中,現(xiàn)有的圖片壓縮與存儲(chǔ)方法往往采用固定的壓縮比例或者簡(jiǎn)單的算法,當(dāng)圖片過(guò)大時(shí)可能導(dǎo)致壓縮過(guò)后的圖片重點(diǎn)不清晰。
技術(shù)實(shí)現(xiàn)思路
1、為實(shí)現(xiàn)上述目的及其它相關(guān)目的,本發(fā)明公開(kāi)一種圖片壓縮方法,包括:
2、接收用戶上傳的圖片,并對(duì)圖片進(jìn)行判斷;
3、若圖片大小小于預(yù)設(shè)圖片大小閾值,則對(duì)圖片直接進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片;
4、若圖片大小大于預(yù)設(shè)圖片大小閾值,則根據(jù)圖片計(jì)算得到動(dòng)態(tài)壓縮率,根據(jù)動(dòng)態(tài)壓縮率對(duì)圖片進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片,其中,所述動(dòng)態(tài)壓縮率為:
5、cri=ai/(ai+ci);
6、其中,cri為第i個(gè)區(qū)域的動(dòng)態(tài)壓縮率,ai為圖片中的第i個(gè)區(qū)域的重要性權(quán)重,ci為第i個(gè)區(qū)域的復(fù)雜度指標(biāo);
7、對(duì)預(yù)壓縮圖片進(jìn)行檢驗(yàn),若其大小和分辨率大于預(yù)設(shè)的圖片大小閾值和圖片分辨率閾值,則通過(guò)優(yōu)化算法確定壓縮參數(shù),根據(jù)壓縮參數(shù)對(duì)預(yù)壓縮圖片進(jìn)行壓縮,并反復(fù)執(zhí)行該步驟,直到預(yù)壓縮圖片符合大小和分辨率要求,此時(shí)將預(yù)壓縮圖片作為最終壓縮圖片;
8、對(duì)最終壓縮圖片進(jìn)行存儲(chǔ)。
9、進(jìn)一步的,所述通過(guò)優(yōu)化算法確定壓縮參數(shù)包括:
10、p=arg?minp(qloss(p)+λ?sizediff(p));
11、其中p為壓縮參數(shù),qloss(p)為以p為自變量的質(zhì)量損失函數(shù),sizediff(p)為壓縮后圖像大小與目標(biāo)大小的差異,λ為正則化參數(shù),上述公式表示,p值需滿足qloss(p)+λ?sizediff(p)為最小值。
12、進(jìn)一步的,所述對(duì)最終壓縮圖片進(jìn)行存儲(chǔ)包括:
13、根據(jù)不同的存儲(chǔ)介質(zhì)和網(wǎng)絡(luò)延遲時(shí)間計(jì)算存儲(chǔ)決策值:
14、d=s(r)*t/x;
15、其中s(r)為取決于存儲(chǔ)介質(zhì)r的成本函數(shù),t為當(dāng)前網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)延遲時(shí)間,x為用戶上傳的圖片大?。?/p>
16、根據(jù)決策值選擇數(shù)值最低的存儲(chǔ)介質(zhì)和上傳時(shí)間,將圖片上傳到對(duì)象存儲(chǔ)系統(tǒng)內(nèi)進(jìn)行持久化存儲(chǔ)。
17、進(jìn)一步的,所述質(zhì)量損失函數(shù)為衡量壓縮后圖片相對(duì)于原圖損失程度的函數(shù),基于峰值信噪比或結(jié)構(gòu)相似性指數(shù)進(jìn)行定義。
18、另一方面,本發(fā)明還提供了一種圖片壓縮系統(tǒng),包括:
19、圖片接收模塊,用于接收用戶上傳的圖片;
20、預(yù)處理模塊,用于對(duì)圖片進(jìn)行判斷并預(yù)處理;
21、若圖片大小小于預(yù)設(shè)圖片大小閾值,則對(duì)圖片直接進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片;
22、若圖片大小大于預(yù)設(shè)圖片大小閾值,則根據(jù)圖片計(jì)算得到動(dòng)態(tài)壓縮率,根據(jù)動(dòng)態(tài)壓縮率對(duì)圖片進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片,其中,所述動(dòng)態(tài)壓縮率為:
23、cri=ai/(ai+ci);
24、其中,cri為第i個(gè)區(qū)域的動(dòng)態(tài)壓縮率,ai為圖片中的第i個(gè)區(qū)域的重要性權(quán)重,ci為第i個(gè)區(qū)域的復(fù)雜度指標(biāo);
25、圖片壓縮模塊,用于對(duì)預(yù)壓縮圖片進(jìn)行檢驗(yàn),若其大小和分辨率大于預(yù)設(shè)的圖片大小閾值和圖片分辨率閾值,則通過(guò)優(yōu)化算法確定壓縮參數(shù),根據(jù)壓縮參數(shù)對(duì)預(yù)壓縮圖片進(jìn)行壓縮,并反復(fù)執(zhí)行該步驟,直到預(yù)壓縮圖片符合大小和分辨率要求,此時(shí)將預(yù)壓縮圖片作為最終壓縮圖片;
26、存儲(chǔ)模塊,用于對(duì)最終壓縮圖片進(jìn)行存儲(chǔ)。
27、另一方面,本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述所述的方法。
28、通過(guò)采用上述技術(shù)方案,接收到用戶上傳的圖片時(shí),首先判斷圖片的大小,若圖片大小小于預(yù)設(shè)圖片大小閾值,則對(duì)圖片直接進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片,若圖片大小大于預(yù)設(shè)圖片大小閾值,則根據(jù)圖片計(jì)算得到動(dòng)態(tài)壓縮率,根據(jù)動(dòng)態(tài)壓縮率對(duì)圖片進(jìn)行預(yù)壓縮,生成預(yù)壓縮圖片,對(duì)重要性較高的區(qū)域進(jìn)行保護(hù);之后對(duì)預(yù)壓縮圖片進(jìn)行壓縮,使得圖片在符合大小和分辨率的前提下,盡可能平衡質(zhì)量以及圖像大小之間的差異,提高綜合壓縮質(zhì)量;之后考慮存儲(chǔ)成本和上傳的時(shí)間成本,選擇合適的存儲(chǔ)介質(zhì)和上傳時(shí)間對(duì)圖片進(jìn)行上傳,動(dòng)態(tài)平衡了圖片質(zhì)量、壓縮效率以及成本之間的關(guān)系。
1.一種圖片壓縮方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)優(yōu)化算法確定壓縮參數(shù)包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)最終壓縮圖片進(jìn)行存儲(chǔ)包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述質(zhì)量損失函數(shù)為衡量壓縮后圖片相對(duì)于原圖損失程度的函數(shù),基于峰值信噪比或結(jié)構(gòu)相似性指數(shù)進(jìn)行定義。
5.一種圖片壓縮系統(tǒng),其特征在于,包括:
6.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-4之一所述的方法。