名稱
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
會執行壓縮,但只會回報統計資料。使用 &&t;-" 做為輸出名稱,會將輸出內容直接導向 'stdout'. -- string
- 明確指定輸入檔案。如果輸入檔案開頭為 '-',這個選項就非常實用。此選項必須顯示為
last
。 之後會忽略任何其他選項。 -h, -help
- 簡短使用摘要。
-H, -longhelp
- 所有可能選項的摘要。
-version
- 列印版本號碼 (main major.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
開啟指定壓縮層級 (0 到 9) 的
lossless
壓縮模式,其中等級 0 是最快的,9 是最慢。快速模式產生的檔案大小會比慢速更大。良好的預設值是-z 6
。對於這個選項和方法的某些預先定義設定,這個選項實際上是捷徑。如果日後使用-q
或-m
選項,這些選項就會失效。-alpha_q int
指定
0
和100
之間 Alpha 壓縮的壓縮係數。Alpha 的無損壓縮是以100
的值達成,而較低的值則導致有損壓縮。預設為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 (dd),以嘗試壓縮輸出內容。
壓縮器會多次傳送部分編碼,以便盡可能達到此目標。如果同時使用
-size
和-psnr
,系統會優先使用-size
值。 -pass int
- 設定在選項
-size
或-psnr
使用的 Diadiadi 期間可用的票證數量上限。最大值為10
,預設值為1
。如果使用選項-size
或-psnr
,但-pass
未指定,則會使用預設值「##9966'」將使用票證。 -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 轉換。請注意,這個程序的執行速度比預設的 'Fast' RGB->YUV 轉換慢。
-sns int
- 指定空間噪音形狀的幅度。空間噪音形狀 (或簡稱 sns) 是指一般的內建演算法,用於判斷圖片中的哪些區域應使用相對較少的位元,以及哪些地方可以更好地傳輸這些位元。可能的範圍介於
0
(演算法已關閉) 至100
(最大效果)。預設值為50
。 -segments int
- 變更在 Sns 演算法區隔期間使用的分區數量。區隔應在
1
到4
之間。預設值為4
。除非使用-low_memory
,否則這個方法不適用於方法 3 以上的版本。 -partition_limit int
- 限制部分巨集區塊使用的位元數以降低品質。
範圍為
0
(無降級,預設) 至100
(完全降級)。一般來說,中位數的圖片應在30
-70
之間。在 VP8 格式中,所謂的控制分區有 512k 個限制,用於儲存下列資訊:巨集區塊是否被略過、是否屬於哪個區隔、是否已編碼為 4x4 或 Intra 16x16 模式,最後是每個子區塊要使用的預測模式。針對非常大的圖片,512k 只允許每個 16x16 巨集區塊只保留幾個位元。每個巨集區塊的絕對最小值為 4 位元。略過、區隔和模式資訊幾乎可以用到這 4 位元 (儘管不太可能如此),這對於超大型圖片來說並不容易。partition_limit
係數可控制使用最昂貴模式 (內部 4x4) 的頻率。如果達到 512k 的上限,並顯示下列訊息,這項功能就能派上用場:錯誤代碼:6 (Partition0_OVERFLOW:分區 #0 過大,不適合 512 k)。如果使用-partition_limit
不足以達成 512k 限制條件,則必須使用較少的區隔,以為每個巨集區塊儲存更多標頭位元。請參閱-segments
選項。
記錄選項
這些選項可控管輸出層級:
-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
- 指定輸入檔案實際包含原始 Y'CbCr 範例,並依照 ITU-R BT.601 建議提供 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
使用無損格式壓縮格式進行壓縮。預設為1
。 -exact
- 在透明區域中保留 RGB 值。這項設定會預設為關閉,以利壓縮。
-blend_alpha int
- 這個選項會將 Alpha 管道 (如有) 與來源進行比對,方法是使用以 0xrrggbb 指定的十六進位顏色。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/contribution/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 專案編寫而成,可供他人使用。