黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Windows下實(shí)現(xiàn)BPG壓縮以及解壓縮(包含python批量處理圖片)

系統(tǒng) 4062 0

介紹

BPG(Better Portable Graphics)是一種新的圖像格式。 其目的是在質(zhì)量或文件大小成問題時(shí)替換JPEG圖像格式。 它的主要優(yōu)點(diǎn)是:

  1. 壓縮比高。 對于類似的質(zhì)量,文件比JPEG小得多。
  2. 大多數(shù)Web瀏覽器都支持小型Javascript解碼器(gzip壓縮大小:56 KB)。
  3. 基于HEVC開放視頻壓縮標(biāo)準(zhǔn)的子集。
  4. 支持與JPEG(灰度,YCbCr 4:2:0,4:2:2,4:4:4)相同的色度格式,以減少轉(zhuǎn)換過程中的損耗。 支持Alpha通道。 還支持RGB,YCgCo和CMYK顏色空間。
  5. 本機(jī)支持每通道8至14位,以獲得更高的動態(tài)范圍。
  6. 支持無損壓縮。
  7. 可以包括各種元數(shù)據(jù)(例如EXIF,ICC配置文件,XMP)。
  8. 動畫支持。

下載

以下存檔包含bpgenc,bpgdec和bpgview命令行實(shí)用程序(對于Linux)和關(guān)聯(lián)的libbpg庫(讀取存檔中的README文件)的源代碼。 它還包括Javascript解碼器的源代碼: libbpg-0.9.8.tar.gz
Windows的二進(jìn)制分發(fā)(僅限64位): bpg-0.9.8-win64.zip

以下鏈接可以下載上述兩個(gè)工具:

非官方的Github鏡像。https://github.com/mirrorer/libbpg
對于Mac用戶,可以在libbpg Homebrew 公式中使用BPG實(shí)用程序。

參數(shù)介紹(可直接使用工具**bpg-0.9.8-win64.zip** )

1. 編碼

            
              bpgenc -m 9 -b 8 -q 48 input.png -o output.bpg   # -m 控制速度 -b 控制位深度 -q 控制圖像質(zhì)量 -o 輸出圖像

            
          

BPG命令行編碼器是 'bpgenc' 。它需要JPEG或PNG圖像作為輸入。有以下幾個(gè)參數(shù)

  • 速度:默認(rèn)情況下,bpgenc使用x265。你可以編譯很多更慢但更高效的JCTVC編碼器,并使用’-ejctvc’選項(xiàng)選擇它。使用x265,您可以使用 '-m' 選項(xiàng)選擇編碼速度(1 =快速,但圖像較大,9 =較慢但圖像較小)。

  • 位深度:默認(rèn)位深度為8.您可以將其增加到10( '-b 10' 選項(xiàng))以略微提高壓縮比。對于Web發(fā)布,它通常不是一個(gè)好主意,因?yàn)镴avascript解碼器使用更多內(nèi)存。編譯后的x265編碼器支持8,10和12的位深度。通過啟用Makefile定義: USE_JCTVC_HIGH_BIT_DEPTH ,可以編譯較慢的JCTVC編碼器以支持更高的位深度(最多14位)。

  • 通過HEVC無損功能支持無損壓縮作為獎(jiǎng)勵(lì)。除非你知道你做了什么,否則在這種情況下使用PNG輸入!在JPEG輸入的情況下,壓縮與JPEG YCbCr數(shù)據(jù)無關(guān),而與RGB數(shù)據(jù)無關(guān)。在任何情況下,位深度應(yīng)與您的圖片匹配,否則文件大小會增加很多。默認(rèn)情況下,無損模式將位深度設(shè)置為8位。首選顏色空間設(shè)置為“rgb”。筆記:

    • 無損模式對損耗模式的測試較少,但它通常會在攝影圖像上提供更好的PNG結(jié)果。

    • JCTVC編碼器比具有無損壓縮的x265編碼器提供更小的圖像。

  • 量化器的解釋存在細(xì)微差別x265和JCTVC編碼器之間的參數(shù)( -q選項(xiàng) )。 對于圖像壓縮這個(gè)參數(shù)是比較重要的,它控制圖像質(zhì)量,取值范圍[1,51],數(shù)值越高壓縮率越大,圖像質(zhì)量越差。

  • 色彩空間和色度格式:

    *對于JPEG輸入,不修改輸入圖像的色彩空間(YCbCr,RGB,YCbCrK或CMYK)。根據(jù)優(yōu)選的色度格式( '-f' 選項(xiàng))對色度進(jìn)行二次采樣。

    *對于PNG輸入,輸入圖像將轉(zhuǎn)換為首選顏色空間( '-c' 選項(xiàng))。然后根據(jù)優(yōu)選的色度格式對其色度進(jìn)行二次采樣。

    *灰度圖像保持不變。

  • 預(yù)乘alpha:默認(rèn)情況下,bpgenc使用非預(yù)乘alpha來保留顏色分量。然而,預(yù)乘alpha( '-premul' 選項(xiàng))通常以犧牲顏色分量的損失為代價(jià)提供更好的壓縮。如果未編輯圖像,則此丟失不是問題。

  • 動畫:使用’-a’選項(xiàng),動畫可以從一系列PNG或JPEG圖像編碼,索引從1或0.例如: ./ bpgenc -a anim%2d.png -fps 25 -loop 0 - o anim.bpg

2. 解碼

            
              bpgdec -o output.jpg input.bpg

            
          

BPG命令行解碼器是 bpgdec 。 它輸出PNG或PPM圖像。 使用PPM輸出以獲得最快的速度。

  • 使用 '-i' 選項(xiàng),您可以獲得有關(guān)BPG圖像的信息(并且不輸出解碼圖像)。

  • '-b' 選項(xiàng)選擇PNG輸出的位深度(8或16)。 它獨(dú)立于內(nèi)部BPG位深度。

批量使用BPG

這里使用 os 庫 中的 system 操作來調(diào)用外部命令。這里需要將代碼 py文件 bpg-0.9.8-win64.zip 解壓后的文件在同一文件夾,否則運(yùn)行命令的時(shí)候需要使用絕對路徑。

            
              
                import
              
               os

root_dir 
              
                =
              
              
                'D:\\Colorization_Set_test\\test_gray'
              
              
                for
              
               item 
              
                in
              
               os
              
                .
              
              listdir
              
                (
              
              root_dir
              
                )
              
              
                :
              
              
                # 遍歷root_dir
              
              
        name 
              
                =
              
               root_dir 
              
                +
              
              
                '\\'
              
              
                +
              
               item   
              
                # 獲取圖片路徑
              
              
        save_dir 
              
                =
              
              
                'D:\\Colorization_Set_test\\encode'
              
              
                +
              
              
                str
              
              
                (
              
              i
              
                )
              
              
                +
              
              
                '_bpg\\'
              
              
                # 存儲編碼結(jié)果
              
              
        save_dir1 
              
                =
              
              
                'D:\\Colorization_Set_test\\decode'
              
              
                +
              
              
                str
              
              
                (
              
              i
              
                )
              
              
                +
              
              
                '_bpg\\'
              
              
                # 存儲解碼結(jié)果
              
              
                if
              
              
                not
              
               os
              
                .
              
              path
              
                .
              
              exists
              
                (
              
              save_dir
              
                )
              
              
                :
              
              
            os
              
                .
              
              makedirs
              
                (
              
              save_dir
              
                )
              
              
                if
              
              
                not
              
               os
              
                .
              
              path
              
                .
              
              exists
              
                (
              
              save_dir1
              
                )
              
              
                :
              
              
            os
              
                .
              
              makedirs
              
                (
              
              save_dir1
              
                )
              
              

        os
              
                .
              
              system
              
                (
              
              
                'bpgenc -m 9 -b 8 -q 40 '
              
              
                +
              
               name 
              
                +
              
              
                ' -o '
              
              
                +
              
               save_dir 
              
                +
              
               item
              
                .
              
              split
              
                (
              
              
                '.'
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
                +
              
              
                '.bpg'
              
              
                )
              
              
        os
              
                .
              
              system
              
                (
              
              
                'bpgdec -o '
              
              
                +
              
               save_dir1 
              
                +
              
               item
              
                .
              
              split
              
                (
              
              
                '.'
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
                +
              
              
                '.jpg'
              
              
                +
              
              
                ' '
              
              
                +
              
               save_dir 
              
                +
              
               item
              
                .
              
              split
              
                (
              
              
                '.'
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
                +
              
              
                '.bpg'
              
              
                )
              
            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論