Windows下实现BPG压缩以及解压缩(包含python批量处理图片)
介紹
BPG(Better Portable Graphics)是一種新的圖像格式。 其目的是在質(zhì)量或文件大小成問(wèn)題時(shí)替換JPEG圖像格式。 它的主要優(yōu)點(diǎn)是:
下載
以下存檔包含bpgenc,bpgdec和bpgview命令行實(shí)用程序(對(duì)于Linux)和關(guān)聯(lián)的libbpg庫(kù)(讀取存檔中的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
對(duì)于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))以略微提高壓縮比。對(duì)于Web發(fā)布,它通常不是一個(gè)好主意,因?yàn)镴avascript解碼器使用更多內(nèi)存。編譯后的x265編碼器支持8,10和12的位深度。通過(guò)啟用Makefile定義:USE_JCTVC_HIGH_BIT_DEPTH,可以編譯較慢的JCTVC編碼器以支持更高的位深度(最多14位)。
-
通過(guò)HEVC無(wú)損功能支持無(wú)損壓縮作為獎(jiǎng)勵(lì)。除非你知道你做了什么,否則在這種情況下使用PNG輸入!在JPEG輸入的情況下,壓縮與JPEG YCbCr數(shù)據(jù)無(wú)關(guān),而與RGB數(shù)據(jù)無(wú)關(guān)。在任何情況下,位深度應(yīng)與您的圖片匹配,否則文件大小會(huì)增加很多。默認(rèn)情況下,無(wú)損模式將位深度設(shè)置為8位。首選顏色空間設(shè)置為“rgb”。筆記:
-
無(wú)損模式對(duì)損耗模式的測(cè)試較少,但它通常會(huì)在攝影圖像上提供更好的PNG結(jié)果。
-
JCTVC編碼器比具有無(wú)損壓縮的x265編碼器提供更小的圖像。
-
-
量化器的解釋存在細(xì)微差別x265和JCTVC編碼器之間的參數(shù)(-q選項(xiàng))。對(duì)于圖像壓縮這個(gè)參數(shù)是比較重要的,它控制圖像質(zhì)量,取值范圍[1,51],數(shù)值越高壓縮率越大,圖像質(zhì)量越差。
-
色彩空間和色度格式:
*對(duì)于JPEG輸入,不修改輸入圖像的色彩空間(YCbCr,RGB,YCbCrK或CMYK)。根據(jù)優(yōu)選的色度格式('-f'選項(xiàng))對(duì)色度進(jìn)行二次采樣。
*對(duì)于PNG輸入,輸入圖像將轉(zhuǎn)換為首選顏色空間('-c'選項(xiàng))。然后根據(jù)優(yōu)選的色度格式對(duì)其色度進(jìn)行二次采樣。
*灰度圖像保持不變。
-
預(yù)乘alpha:默認(rèn)情況下,bpgenc使用非預(yù)乘alpha來(lái)保留顏色分量。然而,預(yù)乘alpha('-premul'選項(xiàng))通常以犧牲顏色分量的損失為代價(jià)提供更好的壓縮。如果未編輯圖像,則此丟失不是問(wèn)題。
-
動(dòng)畫(huà):使用’-a’選項(xiàng),動(dòng)畫(huà)可以從一系列PNG或JPEG圖像編碼,索引從1或0.例如:./ bpgenc -a anim%2d.png -fps 25 -loop 0 - o anim.bpg
2. 解碼
bpgdec -o output.jpg input.bpgBPG命令行解碼器是bpgdec。 它輸出PNG或PPM圖像。 使用PPM輸出以獲得最快的速度。
-
使用'-i'選項(xiàng),您可以獲得有關(guān)BPG圖像的信息(并且不輸出解碼圖像)。
-
'-b'選項(xiàng)選擇PNG輸出的位深度(8或16)。 它獨(dú)立于內(nèi)部BPG位深度。
批量使用BPG
這里使用 os 庫(kù) 中的 system 操作來(lái)調(diào)用外部命令。這里需要將代碼py文件和 bpg-0.9.8-win64.zip解壓后的文件在同一文件夾,否則運(yùn)行命令的時(shí)候需要使用絕對(duì)路徑。
import osroot_dir = 'D:\\Colorization_Set_test\\test_gray' for item in os.listdir(root_dir): # 遍歷root_dirname = root_dir + '\\' + item # 獲取圖片路徑save_dir = 'D:\\Colorization_Set_test\\encode' + str(i) + '_bpg\\' # 存儲(chǔ)編碼結(jié)果save_dir1 = 'D:\\Colorization_Set_test\\decode' + str(i) + '_bpg\\' # 存儲(chǔ)解碼結(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')總結(jié)
以上是生活随笔為你收集整理的Windows下实现BPG压缩以及解压缩(包含python批量处理图片)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信息化时代客户关系管理对企业的重要性
- 下一篇: python打包工具报错_Pyinsta