Nazwa
cwebp
– kompresowanie pliku graficznego do pliku WebP
Streszczenie
cwebp [options] input_file -o output_file.webp
Opis
cwebp
kompresuje obraz w formacie WebP. Formatami wejściowego mogą być PNG, JPEG, TIFF, WebP lub nieprzetworzone próbki Y'CbCr.
Uwaga: animowane pliki PNG i WebP nie są obsługiwane.
Opcje
Dostępne opcje to:
-o string
- Podaj nazwę wyjściowego pliku WebP. Jeśli go pominiesz,
cwebp
przeprowadzi kompresję, ale będzie raportować tylko statystyki. Użycie „-” jako nazwy wyjściowej spowoduje przekierowanie danych wyjściowych na „stdout”. -- string
- Jasno określ plik wejściowy. Ta opcja jest przydatna, jeśli plik wejściowy
zaczyna się np. od znaku „-”. Ta opcja musi się wyświetlać
last
. Wszystkie pozostałe opcje będą ignorowane. -h, -help
- Krótkie podsumowanie wykorzystania.
-H, -longhelp
- Podsumowanie wszystkich możliwych opcji.
-version
- Wydrukuj numer wersji (jako main.minor.revision) i zamknij.
-lossless
- Zakoduj obraz bez utraty jakości. W przypadku obrazów z całkowicie przezroczystym obszarem niewidoczne wartości w pikselach (R/G/B lub Y/U/V) zostaną zachowane tylko po użyciu opcji
-exact
. -near_lossless int
- Określ poziom prawie bezstratnego wstępnego przetwarzania zdjęcia. Ta opcja dostosowuje wartości pikseli, by zwiększyć kompresję, ale ma minimalny wpływ na jakość wizualną. Automatycznie aktywuje tryb kompresji bezstratnej.
Zakres wynosi od
0
(maksymalne przetwarzanie wstępne) do100
(bez przetwarzania wstępnego, wartość domyślna). Typowa wartość to około60
. Pamiętaj, że straty z parametrem-q 100
mogą czasem przynieść lepsze wyniki. -q float
Określ współczynnik kompresji kanałów RGB z zakresu od
0
do100
. Wartość domyślna to75
.W przypadku kompresji stratnej (domyślnie) niewielki współczynnik powoduje utworzenie mniejszego pliku o gorszej jakości. Najlepszą jakość uzyskuje się przy użyciu wartości
100
.W przypadku kompresji bezstratnej (określanej za pomocą opcji
-lossless
) niewielki współczynnik umożliwia szybszą kompresję, ale powoduje utworzenie większego pliku. Maksymalna kompresja jest uzyskiwana przy użyciu wartości100
.-z int
Włącz tryb kompresji
lossless
przy określonym poziomie między 0 a 9, gdzie poziom 0 oznacza największą szybkość, a 9 – najwolniejszy. Pliki w trybie szybkim są większe niż wolniejsze. Dobra wartość domyślna to-z 6
. Ta opcja to skrót do niektórych wstępnie zdefiniowanych ustawień jakości i metody. Jeśli później użyjesz opcji-q
lub-m
, unieważnią one działanie tej opcji.-alpha_q int
Podaj współczynnik kompresji alfa między
0
a100
. Bezstratną kompresję alfa uzyskuje się przy użyciu wartości100
, a niższe wartości powodują kompresję stratną. Wartość domyślna to100
.-preset string
Określ zestaw wstępnie zdefiniowanych parametrów pasujących do konkretnego typu materiału źródłowego. Możliwe wartości:
default
,photo
,picture
,drawing
,icon
,text
.-preset
zastępuje wartości innych parametrów (z wyjątkiem parametru-q
), dlatego ta opcja powinna pojawiać się jako pierwsza w kolejności argumentów.-m int
Określ używaną metodę kompresji. Ten parametr określa równowagę między szybkością kodowania a rozmiarem i jakością skompresowanego pliku. Możliwe wartości od
0
do6
. Wartość domyślna to4
. W przypadku stosowania większych wartości koder poświęca więcej czasu na sprawdzenie dodatkowych możliwości kodowania i podjęcie decyzji o poprawie jakości. Niższa wartość może skrócić czas przetwarzania kosztem większego rozmiaru pliku i niższej jakości kompresji.-crop x_position y_position width height
Przytnij źródło do prostokąta z lewym górnym rogiem w współrzędnych (
x_position
,y_position
) i rozmiarzewidth
xheight
. Ten obszar przycinania musi być całkowicie ograniczony do prostokąta źródłowego. Uwaga: przycięcie jest stosowane przed skalowaniem.-resize width height
Zmień rozmiar źródła na prostokąt o wymiarach
width
xheight
. Jeśli którykolwiek z parametrów szerokości lub wysokości (ale nie oba) jednocześnie wynosi0
, wartość zostanie obliczona z zachowaniem współczynnika proporcji. Uwaga: skalowanie jest stosowane po przycięciu.-mt
Jeśli to możliwe, do kodowania użyj wielowątkowości.
-low_memory
Ogranicz wykorzystanie pamięci przy stratnym kodowaniu, zapisując rozmiar 4-krotnie większy od rozmiaru skompresowanego (zwykle). Spowoduje to spowolnienie kodowania, a także nieco inne zmiany rozmiaru i zniekształceń danych wyjściowych. Ta flaga działa tylko w przypadku metod 3 i nowszych i jest domyślnie wyłączona. Pamiętaj, że wyłączenie tej flagi będzie miało pewne skutki uboczne dla strumienia bitów: wymusza stosowanie niektórych funkcji strumienia bitów, takich jak liczba partycji (wartość
1
jest wymuszana). Pamiętaj, że gdy używasz tej opcji,cwebp
generuje bardziej szczegółowy raport o rozmiarze strumienia bitów.
Opcje stratne
Te opcje są skuteczne tylko w przypadku kodowania stratnego (domyślnego, z kanałem alfa lub bez niego).
-size int
- Określ rozmiar docelowy (w bajtach), do którego chcesz docierać skompresowane dane wyjściowe. Kompresor wykona kilka uruchomień częściowego kodowania, aby zbliżyć się do wartości docelowej. Jeśli używana jest zarówno wartość
-size
, jak i-psnr
, nadrzędna jest wartość-size
. -psnr float
- Określ docelową wartość PSNR (w dB), aby spróbować uzyskać skompresowane dane wyjściowe.
Kompresor wykona kilka uruchomień częściowego kodowania, aby zbliżyć się do wartości docelowej. Jeśli używasz zarówno wartości
-size
, jak i-psnr
, nadrzędna jest wartość-size
. -pass int
- Ustaw maksymalną liczbę kart do użycia w ramach dychotomii używanej przez opcje
-size
lub-psnr
. Wartość maksymalna to10
, a wartość domyślna to1
. Jeśli użyto opcji-size
lub-psnr
, ale nie określono-pass
, używana jest domyślna wartość „6” kart. Jeśli podasz-pass
, ale nie ma wartości-size
ani-psnr
, docelowy PSNR wynosi 40 dB. -af
- Włącza autofiltrowanie. Ten algorytm poświęci dodatkowy czas na optymalizację siły filtrowania w celu uzyskania zrównoważonej jakości.
-jpeg_like
- Zmień mapowanie parametrów wewnętrznych, aby lepiej dopasować je do oczekiwanego rozmiaru kompresji JPEG. Ta flaga tworzy zwykle plik wyjściowy o rozmiarze zbliżonym do jego odpowiednika JPEG (dla tego samego ustawienia
-q
), ale bez zniekształceń obrazu.
Opcje zaawansowane:
-f int
- Określ natężenie filtra odblokowującego: od
0
(bez filtrowania) do100
(maksymalne filtrowanie). Wartość0
wyłącza filtrowanie. Wyższa wartość zwiększa intensywność procesu filtrowania po zdekodowaniu zdjęcia. Im wyższa wartość, tym płynniej widać obraz. Typowe wartości mieszczą się zwykle w zakresie20
–50
. -sharpness int
- Określ ostrość filtrowania (jeśli jest używana). Zakres wynosi od
0
(najostry) do7
(najmniejszy). Wartość domyślna to0
. -strong
- Zastosuj silne filtrowanie (jeśli jest używana opcja
-f
). Silne filtrowanie jest domyślnie włączone. -nostrong
- Wyłącz silne filtrowanie (jeśli jest używane filtrowanie za pomocą opcji
-f
), a zamiast tego użyj prostego filtrowania. -sharp_yuv
- W razie potrzeby użyj dokładniejszej i wyraźniejszej konwersji RGB->YUV. Pamiętaj, że ten proces jest wolniejszy niż domyślna „szybka” konwersja RGB->YUV.
-sns int
- Określ amplitudę szumu przestrzennego. Kształtowanie szumu przestrzennego (SSN) to ogólny zbiór wbudowanych algorytmów określających, który obszar obrazu powinien wykorzystywać stosunkowo mniej bitów i dokąd lepiej przesłać te dane. Możliwy zakres mieści się w zakresie od
0
(algorytm jest wyłączony) do100
(maksymalny efekt). Wartość domyślna to50
. -segments int
- Zmień liczbę partycji do użycia podczas segmentacji algorytmu sns. Segmenty powinny mieścić się w zakresie od
1
do4
. Wartość domyślna to4
. Ta opcja nie działa w przypadku metod 3 i nowszych, chyba że jest używana funkcja-low_memory
. -partition_limit int
- Pogarsza jakość przez ograniczenie liczby bitów używanych przez niektóre makrobloki.
Zakres wynosi od
0
(bez pogorszenia, wartość domyślna) do100
(pełna pogorszenie). Przydatne wartości mieszczą się zwykle w zakresie30
–70
w przypadku umiarkowanie dużych obrazów. W formacie VP8 tzw. partycja kontrolna ma limit 512 KB i służy do przechowywania następujących informacji: czy blok makra został pominięty, do którego segmentu należy, czy jest zakodowany jako tryb 4x4 lub 16x16, a także tryby prognozowania używane dla poszczególnych bloków podrzędnych. W przypadku bardzo dużego obrazu 512 KB pozostawia miejsce tylko na kilka bitów na makroblok 16 x 16. Bezwzględne minimum to 4 bity na makroblok. Informacje dotyczące pominięcia, podziału na segmenty i trybu mogą wykorzystać prawie wszystkie te 4 bity (chociaż jest mało prawdopodobne), co stanowi problem w przypadku bardzo dużych obrazów. Współczynnikpartition_limit
określa, jak często używany będzie najbardziej najdroższy tryb (intra 4 x 4). Jest to przydatne, gdy zostanie osiągnięty limit 512 KB i wyświetli się następujący komunikat: Kod błędu: 6 (PARTITION0_OVERFLOW: partycja 0 jest zbyt duża, aby pomieścić 512 KB). Jeśli użycie parametru-partition_limit
nie spełni ograniczenia 512 tys., należy użyć mniejszej liczby segmentów, aby zaoszczędzić więcej bitów nagłówka na makroblok. Zobacz opcję-segments
. Zwróć uwagę, że opcje-m
i-q
również wpływają na decyzje kodera i możliwość osiągnięcia tego limitu.
Opcje logowania
Te opcje sterują poziomem danych wyjściowych:
-v
- Wydrukuj dodatkowe informacje (w szczególności czas kodowania).
-print_psnr
- Obliczanie i raportowanie średniego współczynnika PSNR (Szczytowego stosunku sygnałów do szumu).
-print_ssim
- Oblicz i raportuj średni SSIM (dane o podobieństwie strukturalnym znajdziesz na stronie https://en.wikipedia.org/wiki/SSIM), aby dowiedzieć się więcej.
-print_lsim
- Obliczanie i raportowanie lokalnych danych podobieństwa (suma najniższego błędu wśród kolokowanych sąsiadów pikseli).
-progress
- Raportuj postęp kodowania w procentach.
-quiet
- Nie drukuj niczego.
-short
- Drukuj tylko krótkie informacje (rozmiar pliku wyjściowego i PSNR) do celów testowych.
-map int
- Wyjście dodatkowej mapy ASCII informacji o kodowaniu. Możliwe wartości mapy mieszczą się w zakresie od
1
do6
. Ma to jedynie ułatwić debugowanie.
Opcje dodatkowe
Bardziej zaawansowane opcje:
-s width height
- Określ, że plik wejściowy faktycznie składa się z nieprzetworzonych próbek Y'CbCr zgodnie z zaleceniami ITU-R BT.601 w formacie liniowym 4:2:0. Samolot Luma ma wymiary
width
xheight
. -pre int
- Określ kilka etapów wstępnego przetwarzania danych. Użycie wartości
2
spowoduje włączenie zależnego od jakości pseudolosowego przyciemniania podczas konwersji RGBA > YUVA (tylko kompresja stratna). -alpha_filter string
- Określ metodę filtrowania prognozującego dla płaszczyzny alfa. Jedna z wartości
none
,fast
lubbest
w kolejności rosnącej złożoności i spowolnienia. Wartość domyślna tofast
. Filtrowanie alfa jest przeprowadzane wewnętrznie z wykorzystaniem 4 możliwych prognoz (brak, poziome, pionowe i gradientowe). Trybbest
sprawdza kolejno każdy z nich i wybiera ten, który zapewnia mniejszy rozmiar. Trybfast
próbuje po prostu utworzyć przewidywanie a priori bez testowania wszystkich trybów. -alpha_method int
- Określ algorytm używany do kompresji alfa:
0
lub1
. Algorytm0
oznacza brak kompresji,1
stosuje bezstratny format WebP do kompresji. Wartość domyślna to1
. -exact
- Zachowaj wartości RGB w przezroczystym obszarze. Domyślnie jest on wyłączony, co ułatwia kompresję.
-blend_alpha int
- Ta opcja łączy kanał alfa (jeśli istnieje) z kanałem źródłowym przy użyciu koloru tła określonego w systemie szesnastkowym jako 0xrrggbb. Po zakończeniu okresu kanału alfa ustawia się na wartość nieprzezroczystości
255
. -noalpha
- Skorzystanie z tej opcji spowoduje odrzucenie kanału alfa.
-hint string
- Podaj wskazówkę dotyczącą typu obrazu wejściowego. Możliwe wartości to
photo
,picture
lubgraph
. -metadata string
Rozdzielona przecinkami lista metadanych do skopiowania z danych wejściowych do danych wyjściowych, jeśli występują. Prawidłowe wartości:
all
,none
,exif
,icc
orazxmp
. Wartość domyślna tonone
.Pamiętaj, że format może nie obsługiwać wszystkich kombinacji.
-noasm
Wyłącz wszystkie optymalizacje montażu.
Błędy
Wszystkie błędy zgłaszaj w narzędziu Issue Tracker: https://bugs.chromium.org/p/webp
Mamy poprawki! Zapoznaj się z tym artykułem: https://www.webmproject.org/code/contribute/submitting-patches/.
Przykłady
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
Autorzy
cwebp
jest częścią libwebp
, a jej autorem jest zespół WebP.
Najnowsze drzewo źródeł jest dostępne na stronie https://chromium.googlesource.com/webm/libwebp/
Ta strona z podręcznikiem została napisana dla projektu Debiana (i może być używana przez inne osoby).