專利名稱:一種壓縮圖片文件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖片處理領(lǐng)域,特別涉及一種壓縮圖片文件的方法。
背景技術(shù):
手機(jī)開機(jī)時(shí),顯示的第一幅畫面一般是一張LOGO圖片,可能是運(yùn)營(yíng)商的 LOGO,也可能是制造商的LOGO。由于手機(jī)開機(jī)時(shí)的種種限制,此時(shí)來(lái)不及加載大型 的圖型庫(kù),因此不能顯示常規(guī)格式的圖片。目前比較通用的做法,是在手機(jī)的閃存中, 存儲(chǔ)原始的圖片像素?cái)?shù)據(jù)。但是這些像素?cái)?shù)據(jù)比較占空間,存儲(chǔ)一幅16位的QCIF屏幕 數(shù)據(jù)需要176X220X2 = 77440字節(jié),一幅16位的QVGA屏幕數(shù)據(jù)需要240 X 320 X 2 = 153600字節(jié)。目前比較通用的手機(jī)硬件配置中,閃存空間從8M字節(jié)到128M字節(jié)不等, 尤其對(duì)于較低端的配置,如16M的配置,這幅圖占用了 153600/(1024*1024*16) = 1%。
也許不是一個(gè)大數(shù)目,但是,在實(shí)際的手機(jī)開發(fā)過(guò)程中,有時(shí)候?yàn)榱藴p少10K的空間 占用,都是相當(dāng)困難的。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種壓縮圖片文件的方法,其能實(shí)現(xiàn)用較小的存儲(chǔ)空間存 儲(chǔ)圖片文件。本發(fā)明提供一種壓縮圖片文件的方法,包括以下步驟1.1、設(shè)置所述圖片的存儲(chǔ)格式;1.2、將所述圖片中的顏色編輯成顏色表,對(duì)于其每個(gè)像素點(diǎn),將其對(duì)應(yīng)的顏色 表中的下標(biāo)存儲(chǔ)在一索引表中;1.3、讀取步驟1.2中的索引表,并根據(jù)步驟1.1中的圖片格式對(duì)圖片進(jìn)行RLE壓 縮,將相鄰的點(diǎn)用顏色值和連續(xù)相同色的顏色個(gè)數(shù)表示。所述步驟1.1設(shè)置的圖片格式包括圖片寬度、圖片高度、色深、顏色表長(zhǎng)度、顏 色表以及圖片內(nèi)容。所述步驟1.2包括以下步驟;1.2.1、讀取圖片中下一像素點(diǎn)顏色,記為顏色C;1.2.2、如果顏色C在建立的顏色表中,轉(zhuǎn)步驟1.2.4,否則轉(zhuǎn)步驟1.2.3 ;1.2.3、將顏色C存入顏色表中;1.2.4、將顏色C的下標(biāo)存入顏色索引表中;1.2.5、如果已讀完圖片的最后一個(gè)像素,則進(jìn)行步驟1.3,否則轉(zhuǎn)步驟1.2.1。所述步驟1.3包括以下步驟1.3.1、讀取所述顏色索引表中的下一索引,記為索引I;1.3.2、如果索引I跟上一個(gè)相同,轉(zhuǎn)步驟1.3.3,否則轉(zhuǎn)步驟1.3.4 ;1.3.3、將索引個(gè)數(shù)表L最末項(xiàng)加1 ;1.3.4、將索引I加入索引值表K,索引個(gè)數(shù)表L末尾新增一項(xiàng),其值為1 ;
1.3.5、如果已讀完所有索引,轉(zhuǎn)步驟1.3.6;否則,轉(zhuǎn)步驟1.3.1 ;1.3.6、讀取索引值表K中的下一項(xiàng),并將其存入一壓縮表Z ;讀取索引個(gè)數(shù)表L 中的下一項(xiàng),記為入;1.3.7、如果λ為零,轉(zhuǎn)步驟1.3.6,否則轉(zhuǎn)步驟1.3.8 ;1.3.8、如果λ >最大長(zhǎng)度,轉(zhuǎn)步驟1.3.9;否則轉(zhuǎn)步驟1.3.10,其中,最大長(zhǎng)度 為表示索引表中的最大索引需要的字節(jié)數(shù)所能表示的最大整數(shù)減去最大索引值;1.3.9、將表示索引表中的最大索引需要的字節(jié)數(shù)所能表示的最大整數(shù)存入壓縮 表,λ = λ-最大長(zhǎng)度;1.3.10、如果λ為零,轉(zhuǎn)步驟1.3.12,否則轉(zhuǎn)步驟1.3.11 ;1.3.11、將λ-顏色表中的顏色個(gè)數(shù)存入壓縮表;1.3.12、將圖片寬度、高度、顏色深度、顏色表長(zhǎng)度依次寫入壓縮文件;1.3.13、將顏色表寫入壓縮文件;1.3.14、將壓縮表寫入壓縮文件。所述方法還包括圖片解壓縮步驟步驟Si、讀取圖片寬度、高度、顏色深度、顏色表長(zhǎng)度,記為L(zhǎng)C;步驟S2、讀取下一顏色,并將該顏色存入顏色表;步驟S3、如果已讀取的顏色個(gè)數(shù)超過(guò)LC,轉(zhuǎn)步驟S4;否則,轉(zhuǎn)步驟S2;步驟S4、如果LC < 200,索引長(zhǎng)度LI=I;如果200 =< LC < 65000 ;索引 長(zhǎng)度LI = 2 ;如果LC > 65000,索引長(zhǎng)度LI = 4 ;步驟S5、讀取長(zhǎng)度為L(zhǎng)I字節(jié)的數(shù)據(jù),記為D ;步驟S6、如果D < LC,轉(zhuǎn)步驟S7 ;否則,轉(zhuǎn)步驟S8 ;步驟S7、將D存入像素表;步驟S8、將像素表的最末元素再存1+D-LC次;步驟S9、如果未讀取完畢,轉(zhuǎn)步驟S5;否則,轉(zhuǎn)步驟S10;步驟S10、根據(jù)像素表,顯示圖片。采用本發(fā)明所述的一種壓縮圖片文件的方法,特別適用于LOGO圖片,該方法 針對(duì)LOGO圖片顏色相對(duì)單純、存在大面積相同顏色的特點(diǎn),采用顏色表結(jié)合RLE壓縮 算法的壓縮方式,即對(duì)圖片的每個(gè)像素點(diǎn),僅存儲(chǔ)顏色表中的下標(biāo),并且將相鄰的點(diǎn)用 顏色值和連續(xù)相同色的顏色個(gè)數(shù)來(lái)表示,本發(fā)明達(dá)到了既保持較高的圖片壓縮率,又易 于操作實(shí)現(xiàn)的目的。
圖1為本發(fā)明所述壓縮算法流程圖;圖2為本發(fā)明所述解壓縮算法流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。參見圖1,本發(fā)明提供一種壓縮圖片文件的方法,包括以下步驟1.1、設(shè)置所述圖片的存儲(chǔ)格式。
所述步驟1.1設(shè)置的圖片格式包括圖片寬度、圖片高度、色深、顏色表長(zhǎng)度、顏 色表以及圖片內(nèi)容。格式具體見下表1:
權(quán)利要求
1.一種壓縮圖片文件的方法,其特征在于,包括以下步驟1.1、設(shè)置所述圖片的存儲(chǔ)格式;1.2、將所述圖片中的顏色編輯成顏色表,對(duì)于其每個(gè)像素點(diǎn),將其對(duì)應(yīng)的顏色表中 的下標(biāo)存儲(chǔ)在一索引表中;1.3、讀取步驟1.2中的索引表,并根據(jù)步驟1.1中的圖片格式對(duì)圖片進(jìn)行RLE壓縮, 將相鄰的點(diǎn)用顏色值和連續(xù)相同色的顏色個(gè)數(shù)表示。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟1.1設(shè)置的圖片格式包括圖片寬 度、圖片高度、色深、顏色表長(zhǎng)度、顏色表以及圖片內(nèi)容。
3.如權(quán)利要求2所述的方法,其特征在于,所述步驟1.2包括以下步驟;1.2.1、讀取圖片中下一像素點(diǎn)顏色,記為顏色C;1.2.2、如果顏色C在建立的顏色表中,轉(zhuǎn)步驟1.2.4,否則轉(zhuǎn)步驟1.2.3;1.2.3、將顏色C存入顏色表中;1.2.4、將顏色C的下標(biāo)存入顏色索引表中;1.2.5、如果已讀完圖片的最后一個(gè)像素,則進(jìn)行步驟1.3,否則轉(zhuǎn)步驟1.2.1。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟1.3包括以下步驟1.3.1、讀取所述顏色索引表中的下一索引,記為索引I;1.3.2、如果索引I跟上一個(gè)相同,轉(zhuǎn)步驟1.3.3,否則轉(zhuǎn)步驟1.3.4;1.3.3、將索引個(gè)數(shù)表L最末項(xiàng)加1;1.3.4、將索引I加入索引值表K,索引個(gè)數(shù)表L末尾新增一項(xiàng),其值為1;1.3.5、如果已讀完所有索引,轉(zhuǎn)步驟1.3.6;否則,轉(zhuǎn)步驟1.3.1;1.3.6、讀取索引值表K中的下一項(xiàng),并將其存入一壓縮表Z;讀取索引個(gè)數(shù)表L中 的下一項(xiàng),記為入;1.3.7、如果λ為零,轉(zhuǎn)步驟1.3.6,否則轉(zhuǎn)步驟1.3.8;1.3.8、如果λ>最大長(zhǎng)度,轉(zhuǎn)步驟1.3.9;否則轉(zhuǎn)步驟1.3.10,其中,最大長(zhǎng)度為表 示索引表中的最大索引需要的字節(jié)數(shù)所能表示的最大整數(shù)減去最大索引值;1.3.9、將表示索引表中的最大索引需要的字節(jié)數(shù)所能表示的最大整數(shù)存入壓縮表, λ = λ-最大長(zhǎng)度;1.3.10、如果λ為零,轉(zhuǎn)步驟1.3.12,否則轉(zhuǎn)步驟1.3.11;1.3.11、將λ-顏色表中的顏色個(gè)數(shù)存入壓縮表;1.3.12、將圖片寬度、高度、顏色深度、顏色表長(zhǎng)度依次寫入壓縮文件;1.3.13、將顏色表寫入壓縮文件;1.3.14、將壓縮表寫入壓縮文件。
5.如權(quán)利要求4所述的方法,其特征在于,所述方法還包括圖片解壓縮步驟 步驟Si、讀取圖片寬度、高度、顏色深度、顏色表長(zhǎng)度,記為L(zhǎng)C;步驟S2、讀取下一顏色,并將該顏色存入顏色表; 步驟S3、如果已讀取的顏色個(gè)數(shù)超過(guò)LC,轉(zhuǎn)步驟S4;否則,轉(zhuǎn)步驟S2; 步驟S4、如果LC < 200,索引長(zhǎng)度LI=I;如果200 =< LC < 65000 ;索引長(zhǎng)度 LI = 2 ;如果 LC > 65000,索引長(zhǎng)度 LI = 4 ; 步驟S5、讀取長(zhǎng)度為L(zhǎng)I字節(jié)的數(shù)據(jù),記為D;步驟S6、如果D < LC,轉(zhuǎn)步驟S7 ;否則,轉(zhuǎn)步驟S8 ;步驟S7、將D存入像素表;步驟S8、將像素表的最末元素再存1+D-LC次;步驟S9、如果未讀取完畢,轉(zhuǎn)步驟S5;否則,轉(zhuǎn)步驟S10;步驟S10、根據(jù)像素表,顯示圖片。
全文摘要
本發(fā)明揭示了一種壓縮圖片文件的方法,特別適用于LOGO圖片,該方法針對(duì)LOGO圖片顏色相對(duì)單純、存在大面積相同顏色的特點(diǎn),采用顏色表結(jié)合RLE壓縮算法的壓縮方式,即對(duì)圖片的每個(gè)像素點(diǎn),僅存儲(chǔ)顏色表中的下標(biāo),并且將相鄰的點(diǎn)用顏色值和連續(xù)相同色的顏色個(gè)數(shù)來(lái)表示,本發(fā)明達(dá)到了既保持較高的圖片壓縮率,又易于操作實(shí)現(xiàn)的目的。
文檔編號(hào)G06T9/00GK102013105SQ20101025808
公開日2011年4月13日 申請(qǐng)日期2010年8月19日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者羅永兵 申請(qǐng)人:上海聞泰電子科技有限公司