cwebp

Nazwa

cwebp – kompresowanie pliku obrazu do pliku WebP

Streszczenie

cwebp [options] input_file -o output_file.webp

Opis

cwebp kompresuje obraz do formatu WebP. Dane wejściowe mogą mieć następujący format: 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 podstawowe:

-o string
Podaj nazwę wyjściowego pliku WebP. Jeśli ominięte, cwebp spowoduje kompresję, ale tylko raportowanie statystyk. Używanie znaku „-” a nazwa danych wyjściowych będzie kierować dane wyjściowe do „stdout”.
-- string
Wyraźnie określ plik wejściowy. Ta opcja jest przydatna, gdy dane wejściowe zaczyna się od znaku „-” na przykład. Ta opcja musi się wyświetlić last. Pozostałe opcje zostaną zignorowane.
-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 danych. W przypadku obrazów z całkowicie przezroczystym obszarem niewidoczne wartości pikseli (R/G/B lub Y/U/V) zostaną zachowane tylko wtedy, gdy Używana jest opcja -exact.
-near_lossless int
Określ poziom prawie bezstratnego przetwarzania wstępnego obrazu. Ta opcja dostosowuje wartości pikseli, aby ułatwić kompresję, ale ma minimalny wpływ na jakość obrazu. Automatycznie uruchamia tryb kompresji bezstratnej. Zakres: 0 (maksymalne wstępne przetwarzanie) do 100 (brak wstępnego przetwarzania, domyślnie). Typowa wartość wynosi około 60. Pamiętaj, że straty z wartością -q 100 mogą czasami przynosić lepsze wyniki.
-q float

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

W przypadku kompresji stratnej (domyślnie) mały współczynnik powoduje utworzenie mniejszego pliku o niższej jakości. Najlepszą jakość uzyskuje się, używając wartości 100.

W przypadku kompresji bezstratnej (określanej przez opcję -lossless) mały współczynnik umożliwia szybsze kompresowanie, ale powoduje powstanie większego pliku. Maksymalna kompresja jest osiągana przy użyciu wartości 100.

-z int

Włącz tryb kompresji lossless z poziomem kompresji od 0 do 9, gdzie 0 to najszybszy, a 9 najwolniejszy poziom kompresji. Tryb szybki powoduje większy rozmiar plików niż wolniejsze. Dobra wartość domyślna to -z 6. Ta opcja jest w istocie skrótem do niektórych wstępnie zdefiniowanych ustawień jakości i metody. Jeśli później użyjesz opcji -q lub -m, anuluje to działanie tej opcji.

-alpha_q int

Określ współczynnik kompresji dla kompresji alfa w zakresie od 0 do 100. Bezstratna kompresja alfa jest osiągana przy użyciu wartości 100, podczas gdy niższe wartości powodują kompresję stratną. Wartość domyślna to 100.

-preset string

Możesz określić zestaw wstępnie zdefiniowanych parametrów dostosowanych do konkretnego 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 być umieszczona na początku listy argumentów.

-m int

Określ metodę kompresji, która ma być używana. Ten parametr kontroluje wymianę między szybkością kodowania a rozmiarem i jakością skompresowanego pliku. Możliwe wartości mieszczą się w zakresie od 0 do 6. Wartością domyślną jest 4. Gdy używasz wyższych wartości, koder poświęca więcej czasu na sprawdzenie dodatkowych możliwości kodowania i podjęcie decyzji o zwiększeniu jakości. Niższa wartość może skutkować szybszym przetwarzaniem, ale większym rozmiarem pliku i niższą jakością kompresji.

-crop x_position y_position width height

Przytnij źródło do prostokąta z lewym górnym rogiem o współrzędnych (x_position, y_position) i rozmiarach width x height. Ta obszar przycinania musi być w pełni zawarty w prostokącie źródłowym. Uwaga: przycinanie jest stosowane przed skalowaniem.

-resize width height

Zmień rozmiar źródła na prostokąt o wymiarach width x height. Jeśli jeden z nich (ale nie oba) parametru szerokości i wysokości wynosi 0, wartość zostanie obliczony z zachowaniem współczynnika proporcji. Uwaga: skalowanie jest stosowane po przycinanie.

-mt

W miarę możliwości użyj kodowania wielowątkowego.

-low_memory

Zmniejsz wykorzystanie pamięci w przypadku kodowania stratnego, zapisując 4-krotnie więcej skompresowanego kodu rozmiaru (zwykle). Kodowanie będzie wolniejsze, a wynik jeśli chodzi o rozmiar i zniekształcenia. Ta flaga działa tylko w przypadku metody 3 i nowszych. Ta opcja jest domyślnie wyłączona. Pamiętaj, że pozostawienie tej flagi wyłączonej będzie mieć pewne skutki uboczne: wymusi funkcje takie jak liczba partycji (wymuszone na 1). Pamiętaj, że przy szczegółowy raport o rozmiarze strumienia bitów jest drukowany przez cwebp, gdy używasz tego .

Opcje strat

Te opcje są skuteczne tylko przy kodowaniu stratnym (domyślnie z alfa lub bez).

-size int
Podaj docelowy rozmiar (w bajtach) skompresowanego wyjścia. Kompresor wykona kilka przebiegu częściowego kodowania aby jak najbardziej zbliżyć się do tego celu. Jeśli zarówno -size, jak i używane są wartości -psnr, a zastosowana wartość to -size.
-psnr float
Określ docelowy PSNR (w dB), aby spróbować uzyskać skompresowane dane wyjściowe. Kompresor wykona kilka przejść częściowego kodowania, aby jak najbardziej zbliżyć się do tego celu. Jeśli używane są zarówno -size, jak i -psnr, pierwszeństwo ma wartość -size.
-pass int
Ustaw maksymalną liczbę kart używanych podczas dychotomii używanej przez opcje -size lub -psnr. Wartość maksymalna to 10, a wartość domyślna to 1. Opcje Jeżeli Użyto wartości -size lub -psnr, ale nie określono -pass (wartość domyślna) z „6” biletów. Jeśli określono parametr -pass, ale nie określono parametrów -size ani -psnr, zostanie użyta docelowa wartość PSNR równa 40 dB.
-af
Włącza automatyczny filtr. Ten algorytm będzie poświęcać więcej czasu na optymalizację aby uzyskać optymalną jakość filtra.
-jpeg_like
Zmień mapowanie parametrów wewnętrznych, by lepiej pasowały do oczekiwanego rozmiaru kompresja JPEG; Ogólnie rzecz biorąc, ta flaga generuje plik wyjściowy rozmiar podobny do jego odpowiednika w formacie JPEG (dla tego samego ustawienia -q), ale z mniej zniekształceń wzroku.

Opcje zaawansowane:

-f int
Określ siłę filtra blokującego w zakresie 0 (bez filtrowania) i 100 (filtrowanie maksymalne). Wartość 0 wyłącza filtrowanie. Wyższa wartość zwiększa siłę zastosowanego procesu filtrowania po zdekodowaniu zdjęcia. Im wyższa wartość, tym obraz będzie płynniejszy. Typowe wartości mieszczą się w zakresie od 20 do 50.
-sharpness int
Określ ostrość filtrowania (jeśli jest używane). Zakres: 0 (najbliższy) do 7 (najmniej wyraźny). Wartość domyślna to 0.
-strong
Używaj silnego filtrowania (jeśli używasz filtra -f) ). Silne filtrowanie jest domyślnie włączone.
-nostrong
Wyłącz silne filtrowanie (jeśli używasz filtrowania dzięki funkcji -f ), i użyj prostego filtrowania.
-sharp_yuv
Użyj dokładniejszej i ostrzejszej konwersji RGB na YUV. Pamiętaj, że ten proces jest wolniejszy niż domyślna szybka konwersja RGB na YUV.
-sns int
Podaj amplitudę kształtowania szumów przestrzennych. Kształtowanie szumu przestrzennego (w skrócie sns) odnosi się do ogólnego zbioru wbudowanych algorytmów. służy do decydowania, w którym obszarze obrazu powinna być stosunkowo mniej bitów, i gdzie je przenieść. Możliwy zakres wynosi od 0 (algorytm jest wyłączony) na 100 (efekt maksymalny). Wartość domyślna to 50
-segments int
Zmienia liczbę partycji, które mają być używane podczas podziału na segmenty w algorytmie SNS. Segmenty powinny mieścić się w zakresie od 1 do 4. Wartością domyślną jest 4. Ta opcja nie ma zastosowania w przypadku metod 3 i nowszych, chyba że -low_memory jest
-partition_limit int
Pogorszenie jakości przez ograniczenie liczby bitów używanych przez niektóre makrobloki. Zakres wynosi od 0 (bez pogorszenia, wartość domyślna) do 100 (pełne pogorszenie). W przypadku średnio dużych obrazów przydatne wartości to zwykle 3070. W w formacie VP8, tak zwana partycja sterowania ma limit 512 kB i jest służą do przechowywania następujących informacji: czy makroblok to pominięte, czyli segment, do którego należy, czy jest zakodowany jako Intra 4x4, w trybie 16x16, a także tryby prognozowania do użycia w każdym bloki podrzędne. W przypadku bardzo dużego obrazu 512 k pozostawia tylko kilka bitów na makroblok 16 x 16. Bezwzględne minimum to 4 bity na makroblok. Pomiń, informacji o segmencie i trybie mogą zużywać prawie wszystkie te 4 bity (chociaż jest mało prawdopodobne), co stanowi problem w przypadku bardzo dużych zdjęć. Współczynnik partition_limit określa, jak często jest (Intra 4x4). Jest to przydatne, gdy osiągnięto limit 512 kB i wyświetla się komunikat: Kod błędu: 6 (PARTITION0_OVERFLOW: partycja 0 jest zbyt duża, aby zmieścić 512 kB). Jeśli użycie wartości-partition_limit nie wystarcza do spełnienia ograniczenia 512 kB, należy użyć mniejszej liczby segmentów, aby zaoszczędzić więcej bitów nagłówka na makroblok. Zobacz opcję -segments. Pamiętaj, że opcje -m i -q mają też wpływ na decyzje kodera i jego zdolność do osiągnięcia tego limitu.

Opcje logowania

Te opcje kontrolują poziom wyjściowy:

-v
Wydrukuj dodatkowe informacje (w szczególności czas kodowania).
-print_psnr
Oblicza i raportuje średni współczynnik PSNR (szczytowy stosunek sygnału do szumu).
-print_ssim
Obliczanie i zgłaszanie średniej wartości SSIM (wskaźnik podobieństwa strukturalnego, więcej informacji znajdziesz na stronie https://en.wikipedia.org/wiki/SSIM).
-print_lsim
Oblicz i raportuj wskaźnik podobieństwa lokalnego (suma najniższego błędu wśród kolokowanych sąsiadów piksela).
-progress
Raportowanie postępu kodowania w procentach.
-quiet
Nie drukuj niczego.
-short
Wydrukuj tylko krótkie informacje (rozmiar pliku wyjściowego i PSNR) do testowania
-map int
Wyjście dodatkowego kodu ASCII mapy kodowania informacji. Możliwe wartości mapy mieszczą się w zakresie od 1 do 6. Jest to tylko pomoc w debugowaniu.

Opcje dodatkowe

Dostępne są też inne opcje zaawansowane:

-s width height
Potwierdź, że plik wejściowy 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
Określ kroki wstępnego przetwarzania danych. Użycie wartości 2 spowoduje dithering pseudolosowy zależny od jakości podczas konwersji RGBA > YUVA (tylko kompresja stratna).
-alpha_filter string
Określ metodę filtrowania prognozującego dla płaszczyzny alfa. Jedna z tych wartości: none, fast lub best w kolejności rosnącej złożoności i spowalniania. Wartość domyślna to fast. Wewnętrzne filtrowanie alfa jest wykonywane przy użyciu 4 możliwych prognoz (brak, pozioma, pionowa, gradient). best będzie kolejno testować każdy z trybów i wybrać ten, rozmiaru. Tryb fast będzie się starał tworzyć a priori prognozy bez testowania wszystkich trybów.
-alpha_method int
Określ algorytm użyty do kompresji alfa: 0 lub 1. Algorytm 0 oznacza brak kompresji, 1 korzysta z bezstratnego formatu WebP do kompresji. Wartość domyślna to 1.
-exact
Zachowaj wartości RGB w przezroczystym obszarze. Domyślnie jest wyłączona, aby ułatwić kompresję.
-blend_alpha int
Ta opcja łączy kanał alfa (jeśli jest obecny) ze źródłem, używając koloru tła określonego w formacie szesnastkowym jako 0xrrggbb. Alfa kanał jest potem przywracany do nieprzezroczystej wartości 255.
-noalpha
Użycie tej opcji spowoduje odrzucenie kanału alfa.
-hint string
Określ podpowiedź dotyczącą typu obrazu wejściowego. Możliwe wartości to 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 obecnie. Prawidłowe wartości: all, none, exif, icc oraz xmp. Wartość domyślna to none

Pamiętaj, że każdy format danych wejściowych może nie obsługiwać wszystkich kombinacji.

-noasm

Wyłącz wszystkie optymalizacje asemblera.

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ł napisany przez zespół WebP. Najnowsze źródła są dostępne na stronie https://chromium.googlesource.com/webm/libwebp/.

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