cwebp

Nazwa

cwebp – kompresowanie pliku graficznego do pliku WebP

Streszczenie

cwebp [options] input_file -o output_file.webp

Opis

cwebp kompresuje obraz w formacie WebP. Może to być PNG, JPEG, TIFF, WebP lub nieprzetworzone próbki Y'CbCr. Uwaga: animowane pliki PNG i WebP nie są obsługiwane.

Opcje

Dostępne są następujące opcje:

-o string
Określ 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
Wyraźnie określ plik wejściowy. Ta opcja jest przydatna, jeśli plik wejściowy zaczyna się na przykład od znaku „-”. Ta opcja musi się wyświetlać last. Pozostałe opcje będą ignorowane.
-h, -help
Krótkie podsumowanie wykorzystania.
-H, -longhelp
Podsumowanie wszystkich dostępnych opcji.
-version
Wydrukuj numer wersji (jako główna.podrzędna.wersja) i zamknij.
-lossless
Zakoduj obraz bez żadnych strat. W przypadku obrazów z w pełni 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 w pikselach, aby ułatwić kompresję, ale ma minimalny wpływ na jakość wizualną. Automatycznie aktywuje tryb kompresji bezstratnej. Zakres wynosi od 0 (maksymalny zakres przetwarzania wstępnego) do 100 (bez przetwarzania wstępnego, wartość domyślna). Typowa wartość wynosi około 60. Pamiętaj, że straty z metodą -q 100 mogą czasem przynieść lepsze wyniki.
-q float

Określ współczynnik kompresji kanałów RGB z zakresu od 0 do 100. Wartość domyślna to 75.

W przypadku kompresji stratnej (domyślnie) niewielki współczynnik powoduje utworzenie mniejszego pliku o niższej jakości. Najlepszą jakość osiąga 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 daje większe pliki. Największą kompresję uzyskuje się za pomocą wartości 100.

-z int

Włącz tryb kompresji lossless z określonym poziomem między 0 a 9, gdzie poziom 0 oznacza największą szybkość, a 9 – najwolniejszy. W trybie szybkim pliki są większe niż te wolniejsze. Dobre ustawienie domyślne to -z 6. Ta opcja jest skrótem do niektórych wstępnie zdefiniowanych ustawień związanych z jakością i metodą. Jeśli w przyszłości użyjesz opcji -q lub -m, unieważnią one działanie tej opcji.

-alpha_q int

Określ współczynnik kompresji dla kompresji alfa między 0 a 100. Bezstratną kompresję alfa uzyskuje się przy użyciu wartości 100, a niższe wartości powodują kompresję stratną. Wartość domyślna to 100.

-preset string

Określ zestaw wstępnie zdefiniowanych parametrów odpowiednich do określonego typu materiału źródłowego. Możliwe wartości: default, photo, picture, drawing, icon, text.

Ponieważ parametr -preset zastępuje wartości innych parametrów (z wyjątkiem parametru -q), ta opcja powinna pojawić się jako pierwsza w kolejności argumentów.

-m int

Określ metodę kompresji do użycia. Ten parametr określa równowagę między szybkością kodowania a rozmiarem i jakością skompresowanego pliku. Możliwe wartości od 0 do 6. Wartość domyślna to 4. W przypadku użycia wyższych wartości koder poświęca więcej czasu na sprawdzenie dodatkowych możliwości kodowania i podjęcie decyzji o podniesieniu 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 we współrzędnych (x_position, y_position) i rozmiarze width x height. Ten obszar przycinania musi być w całości 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 x height. Jeśli któryś z tych parametrów szerokości lub wysokości (ale nie oba) to 0, 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

Zmniejsz wykorzystanie pamięci przy kodowaniu stratnym, zaoszczędzając 4 razy większy rozmiar po skompresowaniu (zwykle). Spowoduje to spowolnienie kodowania, a także zmianę 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 pozostawienie tej flagi będzie miało pewne skutki uboczne dla strumienia bitów: wymusza stosowanie pewnych funkcji strumienia bitów, takich jak liczba partycji (wymuszona do 1). Pamiętaj, że gdy używasz tej opcji, cwebp generuje bardziej szczegółowy raport o rozmiarze strumienia bitów.

Opcje straty

Te opcje działają tylko w przypadku kodowania stratnego (domyślnego, z kanałem alfa lub bez niego).

-size int
Określ rozmiar docelowy (w bajtach), aby spróbować uzyskać skompresowane dane wyjściowe. Kompresor wykonuje kilka przebiegów częściowego kodowania, aby jak najbardziej zbliżyć się do wartości docelowej. Jeśli używasz zarówno właściwości -size, jak i -psnr, pierwszeństwo ma wartość -size.
-psnr float
Określ docelową wartość PSNR (w dB), aby spróbować uzyskać skompresowane dane wyjściowe. Kompresor wykonuje kilka przebiegów częściowego kodowania, aby jak najbardziej zbliżyć się do wartości docelowej. Jeśli używasz zarówno wartości -size, jak i -psnr, pierwszeństwo ma wartość -size.
-pass int
Ustaw maksymalną liczbę kart do użycia w ramach dychotomii w opcjach -size lub -psnr. Maksymalna wartość to 10, a wartość domyślna to 1. Jeśli użyto opcji -size lub -psnr, ale nie określono -pass, używana jest domyślna wartość kart wynosząca „6”.
-af
Włącza autofiltrowanie. Ten algorytm poświęci dodatkowy czas na optymalizację siły filtrowania, aby uzyskać zrównoważoną jakość.
-jpeg_like
Zmień mapowanie parametrów wewnętrznych, aby lepiej dopasować rozmiar do oczekiwanego rozmiaru kompresji JPEG. Ta flaga pozwala zwykle uzyskać plik wyjściowy o rozmiarze podobnym do swojego 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) do 100 (maksymalne filtrowanie). Wartość 0 wyłącza filtrowanie. Wyższa wartość zwiększa intensywność procesu filtrowania zastosowanego po zdekodowaniu obrazu. Im wyższa wartość, tym płynniej wygląda obraz. Typowe wartości mieszczą się zwykle w zakresie 2050.
-sharpness int
Określ ostrość filtrowania (jeśli jest używana). Zakres wynosi od 0 (najbardziej ostry) do 7 (najmniej ostry). Wartość domyślna to 0.
-strong
Stosuj silne filtrowanie (jeśli używasz filtrowania dzięki opcji -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ę kształtowania szumu przestrzennego. Kształtowanie szumu przestrzennego (czyli inaczej SSN) odnosi się do ogólnego zbioru wbudowanych algorytmów służących do decydowania, który obszar obrazu powinien wykorzystywać stosunkowo mniej bitów i dokąd lepiej przesłać te dane. Może on wynosić od 0 (algorytm wyłączony) do 100 (maksymalny efekt). Wartością domyślną jest 50.
-segments int
Zmień liczbę partycji używanych podczas segmentacji algorytmu DNS. Segmenty powinny mieścić się w zakresie od 1 do 4. Wartość domyślna to 4. Ta opcja nie działa w przypadku metod 3 i nowszych, chyba że jest używany -low_memory.
-partition_limit int
Obniżenie jakości przez ograniczenie liczby bitów używanych przez niektóre makrobloki. Zakres to 0 (bez pogorszenia, wartość domyślna) do 100 (pełne pogorszenie). Przydatne wartości mieszczą się zwykle w zakresie 3070 w przypadku umiarkowanie dużych obrazów. W formacie VP8 tzw. partycja kontrolna ma limit wynoszący 512 tys. 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, które mają być używane w przypadku każdego z bloków podrzędnych. W przypadku bardzo dużego obrazu 512 KB zapewnia tylko kilka bitów na makroblok 16 x 16. Bezwzględne minimum to 4 bity na makroblok. Informacje o pomijaniu, segmentowaniu i trybie mogą zużywać prawie wszystkie te 4 bity (chociaż jest to mało prawdopodobne), co stanowi problem w przypadku bardzo dużych obrazów. Współczynnik partition_limit określa, jak często używany będzie najbardziej kosztowny 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 zmieścić się w rozmiarze 512 KB). Jeśli użycie -partition_limit nie wystarcza do spełnienia 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.

Opcje logowania

Te opcje sterują poziomem danych wyjściowych:

-v
Wydrukuj dodatkowe informacje (w szczególności czas kodowania).
-print_psnr
Oblicz i raportuj średni wskaźnik PSNR (szczytowy stosunek sygnału do szumu).
-print_ssim
Oblicz i prześlij średni SSIM (wskaźnik podobieństwa strukturalnego, dodatkowe informacje znajdziesz na https://en.wikipedia.org/wiki/SSIM).
-print_lsim
Oblicz i raportuj dane dotyczące lokalnego podobieństwa (suma najniższego błędu wśród kolokowanych sąsiadów piksela).
-progress
Raportuj postęp kodowania w procentach.
-quiet
Niczego nie drukuj.
-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 na mapie mieszczą się w zakresie od 1 do 6. Ma to jedynie ułatwić debugowanie.

Opcje dodatkowe

Bardziej zaawansowane opcje to:

-s width height
Określ, czy plik wejściowy faktycznie składa się z nieprzetworzonych próbek Y'CbCr zgodnie z zaleceniem ITU-R BT.601 w formacie liniowym 4:2:0. Samolot Luma ma wymiary width x height.
-pre int
Wskaż etapy wstępnego przetwarzania. Użycie wartości 2 spowoduje włączenie zależnego od jakości pseudolosowego dytheringu podczas konwersji RGBA > YUVA (tylko w przypadku kompresji strasznej).
-alpha_filter string
Określ metodę filtrowania prognozującego na płaszczyźnie alfa. Jedna z wartości none, fast lub best, o rosnącej złożoności i spowolnieniu. Wartość domyślna to fast. Wewnętrznie filtrowanie alfa jest przeprowadzane przy użyciu 4 możliwych prognoz (brak, pozioma, pionowy i gradient). Tryb best po kolei sprawdza każdy z nich i wybiera ten, który zapewnia mniejszy rozmiar. Tryb fast spróbuje tylko próbować sformułować prognozę a priori bez testowania wszystkich trybów.
-alpha_method int
Określ algorytm używany do kompresji alfa: 0 lub 1. Algorytm 0 oznacza brak kompresji, a 1 do kompresji używa bezstratnego formatu WebP. Wartość domyślna to 1.
-exact
Zachowaj wartości RGB w przezroczystym obszarze. Domyślnie jest ono wyłączone, co ułatwia kompresję.
-blend_alpha int
Ta opcja łączy kanał alfa (jeśli istnieje) ze źródłem przy użyciu koloru tła określonego w systemie szesnastkowym jako 0xrrggbb. Po tym czasie kanał alfa jest przywracany do wartości nieprzezroczystej 255.
-noalpha
Użycie tej opcji spowoduje odrzucenie kanału alfa.
-hint string
Podaj wskazówkę dotyczącą typu obrazu wejściowego. Możliwe wartości: photo, picture lub graph.
-metadata string

Rozdzielona przecinkami lista metadanych, które mają zostać skopiowane z danych wejściowych do danych wyjściowych, jeśli występują. Prawidłowe wartości: all, none, exif, icc oraz xmp. Wartość domyślna to none.

Pamiętaj, że formaty wejściowe mogą nie obsługiwać wszystkich kombinacji.

-noasm

Wyłącz wszystkie optymalizacje zestawu.

Błędy

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 i została napisana przez zespół WebP. Najnowsze drzewo źródłowe jest dostępne na stronie https://chromium.googlesource.com/webm/libwebp/

Ta strona podręcznika została utworzona dla projektu Debiana (i może być używana przez inne osoby).