<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yzjcomcn

    統計

    留言簿

    閱讀排行榜

    評論排行榜

    png圖片格式分析

                                                                 Png 格式分析

       現在j2me中能夠用到的圖片格式一般是png。在游戲開發中,為了得到更好的效果,我們需要對png格式的圖片進行處理。下面我就png格式圖片結構進行分析。

       Png圖片結構

    Png格式的圖片一般由一些數據塊組成。列表如下:

    數據塊符號

    數據塊名稱

    多數據塊

    可選否

    位置限制

    IHDR

    文件頭數據塊

    第一塊

    cHRM

    基色和白色點數據塊

    PLTEIDAT之前

    gAMA

    圖像γ數據塊

    PLTEIDAT之前

    sBIT

    樣本有效位數據塊

    PLTEIDAT之前

    PLTE

    調色板數據塊

    IDAT之前

    bKGD

    背景顏色數據塊

    PLTE之后IDAT之前

    hIST

    圖像直方圖數據塊

    PLTE之后IDAT之前

    tRNS

    圖像透明數據塊

    PLTE之后IDAT之前

    oFFs

    (專用公共數據塊)

    IDAT之前

    pHYs

    物理像素尺寸數據塊

    IDAT之前

    sCAL

    (專用公共數據塊)

    IDAT之前

    IDAT

    圖像數據塊

    與其他IDAT連續

    tIME

    圖像最后修改時間數據塊

    無限制

    tEXt

    文本信息數據塊

    無限制

    zTXt

    壓縮文本數據塊

    無限制

    fRAc

    (專用公共數據塊)

    無限制

    gIFg

    (專用公共數據塊)

    無限制

    gIFt

    (專用公共數據塊)

    無限制

    gIFx

    (專用公共數據塊)

    無限制

    IEND

    圖像結束數據

    最后一個數據塊

    Png圖片數據塊列表

         Png格式是由四個關鍵數據塊和一些輔助數據塊組成,四個關鍵數據塊是必需的。有了它們就可以組成一張png圖片,這四個關鍵數據塊就是:

    文件頭數據塊(IHDR)、調色板數據塊(PLTE)、圖象數據塊(IDAT)、圖象結束數據塊(IEND)。為了使圖象的背景色透明,獲得更好的效果,我建議還要將tRNS這個數據塊加上。原來我在手機上就用四個關鍵數據塊合成一張圖片,放到手機上背景色不透明,效果不好,加上tRNS這個數據塊就背景色透明。

    每個png圖片的數據塊的結構都是一樣的。結構圖如下:

    名稱

    字節數

    說明

    Length (長度)

    4字節

    指定數據塊中數據域的長度,其長度不超過(2311)字節

    Chunk Type Code (數據塊類型碼)

    4字節

    數據塊類型碼由ASCII字母(A-Za-z)組成

    Chunk Data (數據塊數據)

    可變長度

    存儲按照Chunk Type Code指定的數據

    CRC (循環冗余檢測)

    4字節

    存儲用來檢測是否有錯誤的循環冗余碼

     

    CRC域中的值是對Chunk Type Code域和Chunk Data域中的數據進行計算得到的。

    每個數據塊都是由這些數據域組成的。

    IHDR

    文件頭數據塊IHDR(header chunk):它包含有PNG文件中存儲的圖像數據的基本信息,并要作為第一個數據塊出現在PNG數據流中,而且一個PNG數據流中只能有一個文件頭數據塊。

    對于一個PNG文件來說,png圖片的標志位:

    十進制數

    137 80 78 71 13 10 26 10

    十六進制數

    89 50 4E 47 0D 0A 1A 0A

    文件頭數據塊由13字節組成,它的格式如下表所示。

    域的名稱

    字節數

    說明

    Width

    4 bytes

    圖像寬度,以像素為單位

    Height

    4 bytes

    圖像高度,以像素為單位

    Bit depth

    1 byte

    圖像深度:
    索引彩色圖像:1248
    灰度圖像:124816
    真彩色圖像:816

    ColorType

    1 byte

    顏色類型:
    0
    :灰度圖像, 124816
    2
    :真彩色圖像,816
    3
    :索引彩色圖像,1248
    4
    :帶α通道數據的灰度圖像,816
    6
    :帶α通道數據的真彩色圖像,816

    Compression method

    1 byte

    壓縮方法(LZ77派生算法)

    Filter method

    1 byte

    濾波器方法

    Interlace method

    1 byte

    隔行掃描方法:
    0
    :非隔行掃描
    1
    Adam7(Adam M. Costello開發的7遍隔行掃描方法)

     

    PLTE

    調色板數據塊PLTE(palette chunk)包含有與索引彩色圖像(indexed-color image)相關的彩色變換數據,它僅與索引彩色圖像有關。PLTE數據塊是定義圖像的調色板信息,PLTE可以包含1~256個調色板信息,每一個調色板信息由3個字節組成:

    顏色

    字節

    意義

    Red

    1 byte

    0 = 黑色, 255 =

    Green

    1 byte

    0 = 黑色, 255 = 綠色

    Blue

    1 byte

    0 = 黑色, 255 = 藍色

    因此,調色板的長度應該是3的倍數。

    并不是所有的png格式的圖片都有調色板數據塊,真彩色圖片可能就沒有。

    IDAT

    圖像數據塊IDAT(image data chunk):它存儲實際的數據,在數據流中可包含多個連續順序的圖像數據塊。

    IDAT存放著圖像真正的數據信息,因此,如果能夠了解IDAT的結構,我們就可以很方便的生成PNG圖像。

    IEND

    圖像結束數據IEND(image trailer chunk):它用來標記PNG文件或者數據流已經結束,并且必須要放在文件的尾部。

    如果我們仔細觀察PNG文件,我們會發現,文件的結尾12個字符看起來總應該是這樣的:

    00 00 00 00 49 45 4E 44 AE 42 60 82

    不難明白,由于數據塊結構的定義,IEND數據塊的長度總是000 00 00 00,除非人為加入信息),數據標識總是IEND49 45 4E 44),因此,CRC碼也總是AE 42 60 82

    上面是png格式圖片的四個關鍵數據塊, 暫時分析到這。

     

     

     

     

     

    posted on 2005-05-04 22:33 古行客 閱讀(2670) 評論(4)  編輯  收藏

    評論

    # re: png圖片格式分析 2006-07-07 10:19 800電話防偽 漸變數碼 雙碼防偽防竄貨 128條碼 0551-5336491



    經典  回復  更多評論   

    # re: png圖片格式分析 2007-11-25 20:23 彼岸

    非常感謝呀!  回復  更多評論   

    # re: png圖片格式分析 2007-11-25 20:25 彼岸

    有沒有后續呢?我現在要做一個程序,把四個png圖片合并成一個  回復  更多評論   

    # 清晰明了 2012-03-31 10:30 Vency

    樓主寫的太正了!感謝分享。
    能對IDAT進一步分析一下嗎?或者有相關材料推薦?  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品一区二区三区无码免费直播| 天天操夜夜操免费视频| 久久久久亚洲精品无码网址色欲 | 亚洲av激情无码专区在线播放| 免费高清在线影片一区| 99热在线观看免费| 国产精品美女久久久免费| 亚洲色大成网站WWW国产| 亚洲综合久久成人69| 亚洲产国偷V产偷V自拍色戒| 四虎国产精品免费久久影院| 亚洲成a人片在线观看中文app| 中文字幕无码精品亚洲资源网| 在线日韩av永久免费观看| 在线观看日本免费a∨视频| 欧洲精品99毛片免费高清观看| 久久九九久精品国产免费直播| 鲁啊鲁在线视频免费播放| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲国产日韩在线一区| 亚洲综合久久成人69| 久久精品亚洲精品国产色婷| 亚洲av无码专区国产乱码在线观看 | 老司机永久免费网站在线观看| 一个人看www在线高清免费看| 亚洲黄色免费在线观看| 99在线热视频只有精品免费| 午夜网站在线观看免费完整高清观看| 精品国产福利尤物免费| a级毛片免费网站| 免费久久人人爽人人爽av| 在线观看片免费人成视频无码 | 国产亚洲av片在线观看播放 | 两个人日本WWW免费版| 一级毛片视频免费观看| 亚洲国产免费综合| 在线观看免费黄色网址| 毛片在线全部免费观看| 免费观看91视频| aⅴ在线免费观看| 成年私人影院免费视频网站|