名稱
cwebp
-- 將圖片檔壓縮成 WebP 檔案
Synopsis
cwebp [options] input_file -o output_file.webp
說明
cwebp
會壓縮使用 WebP 格式的圖片。輸入格式可以是 PNG、JPEG、TIFF、WebP 或原始 Y'CbCr 範例。注意:系統不支援動畫 PNG 和 WebP 動畫檔案。
選項
基本選項如下:
-o string
- 指定輸出 WebP 檔案名稱。如果省略,
cwebp
會執行壓縮,但只會回報統計資料。使用「-」做為輸出名稱會導向「stdout」。 -- string
- 明確指定輸入檔案。如果輸入檔案的開頭是「-」,這個選項就非常實用。此選項必須顯示為
last
。系統會忽略後續採用的其他選項。 -h, -help
- 簡短使用摘要。
-H, -longhelp
- 所有可用選項的摘要。
-version
- 列印版本號碼 (格式為 primary.minor.revision) 並結束。
-lossless
- 對圖片進行編碼時不會喪失任何損失。如果圖片有完全透明區域,只有在使用
-exact
選項時,系統才會保留隱藏的像素值 (R/G/B 或 Y/U/V)。 -near_lossless int
- 指定幾乎無損圖片預先處理作業的等級。這個選項會調整像素值以協助壓縮,但對視覺品質的影響最小。會自動觸發無損壓縮模式。範圍為
0
(預先處理上限) 至100
(非預先處理,此為預設值)。一般值約為60
。請注意,使用-q 100
有損結果有時可能會產生較好的結果。 -q float
指定介於
0
和100
之間的 RGB 管道壓縮係數。預設值為75
。若是有損壓縮 (預設),少量因素會產生品質較低的檔案。使用
100
值就能達到最佳品質。若是無損壓縮 (由
-lossless
選項指定),小型因素可加快壓縮速度,但會產生更大的檔案。使用100
值達到壓縮上限。-z int
開啟
lossless
壓縮模式,並在指定的等級介於 0 到 9 之間。等級 0 為最快等級,9 表示最慢。快速模式產生的檔案大小會比慢圖片還要大。可用的預設值是-z 6
。這個選項實際上是部分預先定義的品質和方法設定的捷徑。如果後續使用-q
或-m
選項,這些選項會失效。-alpha_q int
指定
0
和100
之間的 Alpha 壓縮壓縮係數。使用100
值達到 Alpha 無損壓縮;值較低時,則會產生有損壓縮。預設為100
。-preset string
指定一組預先定義的參數,以符合特定類型的來源材質。可能的值包括:
default
、photo
、picture
、drawing
、icon
、text
。由於
-preset
會覆寫其他參數值 (-q
除外),因此這個選項應優先按照引數的順序顯示。-m int
指定要使用的壓縮方法。這個參數可控制編碼速度與壓縮檔案大小與品質之間的平衡。可能的值介於
0
到6
之間。預設值為4
。使用較高的值時,編碼器會花更多時間檢查其他編碼可能性,並決定品質改善程度。值越低可以縮短處理時間,但代價是較大檔案並降低壓縮品質。-crop x_position y_position width height
將來源裁剪為矩形,左上角為座標 (
x_position
、y_position
) 及大小width
xheight
。這個裁剪區域必須完全包含在來源矩形中。注意:系統會在任何縮放「之前」套用裁剪範圍。-resize width height
將來源大小調整為大小為
width
xheight
的矩形。如果寬度或高度參數其中之一為0
,系統就會計算這個值來保留長寬比。注意:系統會在裁剪「之後」套用縮放比例,-mt
盡可能使用多執行緒進行編碼。
-low_memory
將壓縮大小 (通常) 減少四倍以減少有損編碼的記憶體用量。這樣會減慢編碼速度,且輸出的大小和失真度稍有不同。這個旗標僅適用於方法 3 以上的方法,且預設為關閉。請注意,關閉此標記會對位元串流造成一些副作用:它會強制某些位元串流功能,例如分區數量 (強制設為
1
)。請注意,使用此選項時,cwebp
會輸出位元串流大小的詳細報表。
失真選項
這些選項僅在有失真編碼時有效 (預設值有無 Alpha 版本)。
-size int
- 指定壓縮輸出內容的目標大小 (以位元組為單位) 來嘗試觸及。壓縮工具會進行數次編碼部分,盡可能接近此目標。如果同時使用
-size
和-psnr
,系統會採用-size
值。 -psnr float
- 指定要嘗試取得壓縮輸出內容的目標 PSNR (採用 dB)。壓縮工具會進行數次編碼部分,盡可能接近此目標。如果同時使用
-size
和-psnr
,系統會採用-size
值。 -pass int
- 設定
-size
或-psnr
選項使用字典期間要使用的票證數量上限。最大值為10
,預設值為1
。如果使用-size
或-psnr
選項,但未指定-pass
,則系統會使用預設值「6」票證。如果已指定-pass
,但未指定-size
和-psnr
,則系統會使用 40 dB 的目標 PSNR。 -af
- 開啟自動篩選功能。這個演算法會花更多時間最佳化篩選強度,以達到均衡的品質。
-jpeg_like
- 變更內部參數對應,以更符合 JPEG 壓縮的預期大小。這個標記一般會產生與 JPEG 值類似的輸出檔案 (採用相同的
-q
設定),但視覺失真度較低。
進階選項:
-f int
- 指定解除封鎖篩選器的強度,介於
0
(不篩選) 和100
(最大篩選) 之間。如果設為0
,系統就會關閉所有篩選功能。 值越大,圖片解碼後套用的篩選程序就會越長。值越大,圖片越流暢。一般值通常介於20
到50
之間。 -sharpness int
- 指定濾鏡的銳利度 (如有使用)。範圍是
0
(最低) 到7
(最銳利)。預設值為0
。 -strong
- 使用高強度篩選 (如果透過
-f
選項使用篩選功能)。高強度篩選功能預設為開啟。 -nostrong
- 停用高強度篩選 (如果透過
-f
選項使用),並改用簡易篩選。 -sharp_yuv
- 視需要進行更準確、更清晰的 RGB->YUV 轉換情形。請注意,這項程序的執行速度低於預設的「快速」RGB->YUV。
-sns int
- 指定空間雜訊形狀的幅度。空間噪音形態 (簡稱 sns,簡稱 sns) 是指廣泛的內建演算法集合,用來決定相片的哪些區域應使用較少的位元,而其他需要更妥善傳輸位元的位置。可能的範圍從
0
(演算法已關閉) 到100
(最大效果)。預設值為50
。 -segments int
- 變更在 DNS 演算法區隔期間使用的分區數量。區隔必須介於
1
到4
之間。預設值為4
。除非使用-low_memory
,否則這個選項對於方法 3 及以上方法沒有作用。 -partition_limit int
- 限制某些巨集區塊使用的位元數,降低品質。
範圍為
0
(無降級,預設值) 至100
(完全降級)。適合大型圖片的實用值通常約在30
-70
左右。在 VP8 格式中,所謂的控制分區限制為 512k,可用於儲存下列資訊:是否略過巨集區塊、其所屬的區隔、是否在內部編碼為 4x4 或 16x16 內模式,最後用於每個子區塊的預測模式。如果圖片非常大,每 16x16 巨集區塊的 512k 就只會留下一些空間。每個巨集區塊的絕對必須至少為 4 位元。略過、區隔和模式資訊幾乎可以全部用到這 4 位元 (雖然情況不太可能發生),這對大型圖片而言就會造成問題。partition_limit
因子可控制最昂貴模式 (4x4 內) 的使用頻率。如果達到 512k 的限制,並顯示下列訊息:錯誤代碼:6 (PARTITION0_OVERFLOW: Partition #0 過大,無法配合 512k),如果使用-partition_limit
不足以滿足 512k 的限制,則應使用較少的區隔以便為每個巨集區塊儲存更多標頭位元。請參閱-segments
選項。請注意,-m
和-q
選項也會影響編碼器的決策和能達到此上限的能力。
記錄選項
這些選項可控制輸出程度:
-v
- 列印額外資訊 (特別是編碼時間)。
-print_psnr
- 運算及回報平均 PSNR (峰值訊號與雜訊率)。
-print_ssim
- 運算和回報平均 SSIM (結構相似度指標,詳情請參閱 https://en.wikipedia.org/wiki/SSIM)。
-print_lsim
- 計算及回報區域相似度指標 (指收合像素鄰點的最低誤差總和)。
-progress
- 回報編碼進度百分比。
-quiet
- 不列印任何內容。
-short
- 只列印簡短資訊 (輸出檔案大小和 PSNR) 以供測試。
-map int
- 輸出編碼資訊的其他 ASCII 對應。可能的對應值範圍從
1
到6
。這僅用於協助偵錯。
其他選項
其他進階選項包括:
-s width height
- 指定輸入檔案實際上是由採用 ITU-R BT.601 建議的原始 Y'CbCr 範例,以 4:2:0 線性格式組成。鋁合金大小
width
xheight
。 -pre int
- 指定一些預先處理步驟。如果使用
2
值,則會在 RGBA->YUVA 轉換期間觸發品質相依的偽隨機加密作業 (僅限有損壓縮)。 -alpha_filter string
- 指定 Alpha 平面的預測篩選方法。
none
、fast
或best
中的其中一個之一,其複雜度和速度緩慢的順序增加。預設值為fast
。在內部,Alpha 篩選會使用四種可能的預測 (無、水平、垂直、漸層) 執行。best
模式會依序嘗試每個模式,並挑選大小較小的模式。fast
模式只會嘗試形成「先驗」猜測,而不會測試所有模式。 -alpha_method int
- 指定用於 Alpha 壓縮的演算法:
0
或1
。演算法0
表示未壓縮,1
會使用 WebP 無損格式壓縮。預設為1
。 -exact
- 將 RGB 值保留透明區。這項設定預設為關閉,以便進行壓縮。
-blend_alpha int
- 這個選項會使用十六進位指定背景顏色 (以 0xrrggbb 為單位),將 Alpha 通道與來源混合,Alpha 通道會在之後重設為不透明值
255
。 -noalpha
- 如果使用這個選項,系統會捨棄 Alpha 版。
-hint string
- 指定輸入圖片類型的提示。可能的值包括:
photo
、picture
或graph
。 -metadata string
以半形逗號分隔的中繼資料清單,用於從輸入內容複製到輸出內容 (如有)。有效值:
all
、none
、exif
、icc
、xmp
。預設為none
。請注意,每種輸入格式可能僅支援部分組合。
-noasm
停用所有組合最佳化功能。
錯誤
請將所有錯誤回報給 Issue Tracker:https://bugs.chromium.org/p/webp
歡迎選購修補程式!請參閱這個網頁,瞭解如何開始使用:https://www.webmproject.org/code/contribute/submitting-patches/
示例
cwebp -q 50 -lossless picture.png -o picture_lossless.webp
cwebp -q 70 picture_with_alpha.png -o picture_with_alpha.webp
cwebp -sns 70 -f 50 -size 60000 picture.png -o picture.webp
cwebp -o picture.webp -- ---picture.png
作者
cwebp
為 libwebp
的一部分,由 WebP 團隊編寫。如需最新的原始碼樹狀結構,請前往 https://chromium.googlesource.com/webm/libwebp/
這份手動頁面是專為 Debian 專案所編寫,可能會供其他專案使用。