• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            hdqqq

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              35 隨筆 :: 0 文章 :: 104 評論 :: 0 Trackbacks

            ?

            /*

            ??? Zlib 是常用的壓縮庫,在很多平臺上使用,是用c和部分匯編完成的,提供的是基于c接口的使用函數(shù)

            zlib 的contrib中提供了三種基于iostream的使用方式.

            ?

            ?? 在MFC中,經(jīng)常使用CFile進行文件的讀寫操作,在這種時候,如果想使用Zlib的話,要么使用zlib自身

            提供的操作函數(shù),要么使用zlib contrib中iostream操作流.或者自己對zlib進行封裝.

            ?

            所以我對zlib進行了封裝,便于使用.

            ?

            Filter 功能類

            zlib_compress_filter<int 壓縮級別> 實現(xiàn)壓縮功能類,根據(jù)模板參數(shù)實現(xiàn)不同的壓縮程度.??

            zlib_uncompress_filter<int >? 實現(xiàn)解壓功能類,模板參數(shù)總為 1


            Filter類自身帶有 緩沖區(qū), 可以存儲處理后的數(shù)據(jù),用戶可以直接通過這兩個Filter類對數(shù)據(jù)進行

            壓縮和解壓縮操作.

            ?

            Pipe類

            ??? 為了和MFC中的CFile類進行配接,對數(shù)據(jù)進行處理后,把CFile作為最后接受數(shù)據(jù)的容器,類似于

            Boost庫中的Sink,提供了一個模板實現(xiàn)的BufferPipe模板類.

            ?

            template <typename filter,typename buffer_type, typename next_pipe> class BufferPipe;

            模板參數(shù):

            filter? 數(shù)據(jù)處理用filter

            buffer_type 緩沖類型

            next_pipe 后面接的pipe,可以是CFile,用于最終寫入磁盤.

            ?

            ?

            Pipe后還可以接一個Pipe,可以象一個管子連接起來,并且,以后通過擴充filter可以實現(xiàn)不同的數(shù)據(jù)操作功能.

            ?

            提供了一個測試代碼

            編譯后一個對話框 四個 按鈕

            ?

            按鈕1 將 c:\a.bmp? 壓縮為 c:\b.cr???? 使用filter

            按鈕2 將 c:\b.cr? 解壓縮為 c:\c.bmp?? 使用filter

            按鈕3 將 c:\a.bmp 壓縮為 c:\d.cr?? 使用pipe功能

            按鈕4 將 c:\a.bmp? 通過壓縮和解壓縮管道, 存儲為 e.bmp應該和a.bmp相同,用于測試管道的連接功能.?
            ?

            代碼位置:

            http://www.shnenglu.com/files/hdqqq/z_file.rar

            編譯需要的zlib 請自行到該庫的網(wǎng)站下載.

            這個文章實現(xiàn)的和boost中的filter類似的功能,可以和MFC配合使用.

            不足:

            fiter 使用的 buf_holder寫得比較粗糙,以后有機會的話,改進.

            */

            ?

            posted on 2006-09-01 13:03 hdqqq 閱讀(6020) 評論(7)  編輯 收藏 引用 所屬分類: c/c++

            評論

            # re: zlib 壓縮管道 2006-09-03 16:58 chenger
            為什么要把決定壓縮程度的參數(shù)作為模板參數(shù)呢?看不出有這個必要,而且不直觀  回復  更多評論
              

            # re: zlib 壓縮管道 2006-09-03 18:05 hdqqq_
            壓縮級別 總是要在某個地方設置的,作為模板參數(shù),是為可可以在編譯期就確定下來,當然,也可以有別的做法.  回復  更多評論
              

            # re: zlib 壓縮管道 2006-10-07 00:00 ar4ever
            如何在VC6.0中使用Zlib庫呢,我使用的時候老是出錯。說是zlib1.dll是錯誤的。  回復  更多評論
              

            # re: zlib 壓縮管道 2006-11-22 16:28 hdqqq
            @ar4ever
            你可以在zlib的官方網(wǎng)站下載它的壓縮包,以zlib1.2.3為例,解壓縮后,其目錄下的project子目錄下,有vc 6 的工程文件,有8個項目,分別是匯編和c代碼的dll和lib輸出的工程,你編譯全部后,把你要用的lib 和頭文件 zlib.h 放到vc的include 和lib設置中就可以了.  回復  更多評論
              

            # re: zlib 壓縮管道 2009-04-07 16:13 guest
            壓縮級別作為運行時參數(shù)比較好,這樣程序就稍微靈活了。  回復  更多評論
              

            # re: zlib 壓縮管道 2009-06-10 14:25 ayang
            你這樣的代碼方式屬于什么風格的?  回復  更多評論
              

            国产精品久久新婚兰兰| 久久久久亚洲AV成人网| 精品免费久久久久久久| 亚洲一本综合久久| 97香蕉久久夜色精品国产 | 久久久久99精品成人片欧美| 久久精品毛片免费观看| 很黄很污的网站久久mimi色| 久久精品国产免费观看| 嫩草影院久久国产精品| 中文字幕无码久久精品青草| 精品免费tv久久久久久久| 久久亚洲日韩看片无码| 99久久精品费精品国产| 久久天天躁狠狠躁夜夜躁2O2O| 99久久婷婷国产一区二区| 中文精品久久久久人妻不卡| 99久久精品免费看国产一区二区三区 | 国内精品伊人久久久影院| 91精品久久久久久无码| 狼狼综合久久久久综合网| 久久久这里有精品| 久久无码人妻精品一区二区三区| 99久久无色码中文字幕| 久久夜色精品国产噜噜麻豆| 久久久久精品国产亚洲AV无码| 久久精品国产72国产精福利| 99久久精品无码一区二区毛片| 99re久久精品国产首页2020| 国内精品久久久久影院日本 | 久久99热狠狠色精品一区| 亚洲午夜久久久久久久久久| 中文字幕无码久久久| 中文国产成人精品久久亚洲精品AⅤ无码精品| 香港aa三级久久三级| 国产69精品久久久久777| 国产精品视频久久久| 亚洲乱亚洲乱淫久久| 国产精品无码久久四虎| 久久青青草原精品国产软件| 久久久久黑人强伦姧人妻|