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. 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) do 100 (bez przetwarzania wstępnego, wartość domyślna). Typowa wartość to około 60. 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 do 100. Wartość domyślna to 75.

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ści 100.

-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 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 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 do 6. Wartość domyślna to 4. 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 rozmiarze width x height. 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 x height. Jeśli którykolwiek z parametrów szerokości lub wysokości (ale nie oba) jednocześnie wynosi 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

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 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ść „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) do 100 (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 zakresie 2050.
-sharpness int
Określ ostrość filtrowania (jeśli jest używana). Zakres wynosi od 0 (najostry) do 7 (najmniejszy). Wartość domyślna to 0.
-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) do 100 (maksymalny efekt). Wartość domyślna to 50.
-segments int
Zmień liczbę partycji do użycia podczas segmentacji algorytmu sns. 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ż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) do 100 (pełna 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 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ółczynnik partition_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 do 6. 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 x height.
-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 lub best w kolejności rosnącej złożoności i spowolnienia. Wartość domyślna to fast. Filtrowanie alfa jest przeprowadzane wewnętrznie z wykorzystaniem 4 możliwych prognoz (brak, poziome, pionowe i gradientowe). Tryb best sprawdza kolejno każdy z nich i wybiera ten, który zapewnia mniejszy rozmiar. Tryb fast 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 lub 1. Algorytm 0 oznacza brak kompresji, 1 stosuje bezstratny format WebP do kompresji. Wartość domyślna to 1.
-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 lub graph.
-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 oraz xmp. Wartość domyślna to none.

Pamiętaj, że format może nie obsługiwać wszystkich kombinacji.

-noasm

Wyłącz wszystkie optymalizacje montażu.

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, 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).