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,
cwebpspowoduje 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) do100(brak wstępnego przetwarzania, domyślnie). Typowa wartość wynosi około60. Pamiętaj, że straty z wartością-q 100mogą czasami przynosić lepsze wyniki. -q floatOkreśl współczynnik kompresji dla kanałów RGB z zakresu od
0do100. Wartość domyślna to75.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ści100.-z intWłącz tryb kompresji
losslessz 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-qlub-m, anuluje to działanie tej opcji.-alpha_q intOkreśl współczynnik kompresji dla kompresji alfa w zakresie od
0do100. Bezstratna kompresja alfa jest osiągana przy użyciu wartości100, podczas gdy niższe wartości powodują kompresję stratną. Wartość domyślna to100.-preset stringMoż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
-presetzastępuje wartości innych parametrów (z wyjątkiem parametru-q), ta opcja powinna być umieszczona na początku listy argumentów.-m intOkreś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
0do6. Wartością domyślną jest4. 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 heightPrzytnij źródło do prostokąta z lewym górnym rogiem o współrzędnych (
x_position,y_position) i rozmiarachwidthxheight. Ta obszar przycinania musi być w pełni zawarty w prostokącie źródłowym. Uwaga: przycinanie jest stosowane przed skalowaniem.-resize width heightZmień rozmiar źródła na prostokąt o wymiarach
widthxheight. Jeśli jeden z nich (ale nie oba) parametru szerokości i wysokości wynosi0, wartość zostanie obliczony z zachowaniem współczynnika proporcji. Uwaga: skalowanie jest stosowane po przycinanie.-mtW miarę możliwości użyj kodowania wielowątkowego.
-low_memoryZmniejsz 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 przezcwebp, 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
-sizelub-psnr. Wartość maksymalna to10, a wartość domyślna to1. Opcje Jeżeli Użyto wartości-sizelub-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-sizeani-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) i100(filtrowanie maksymalne). Wartość0wyłą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 od20do50. -sharpness int- Określ ostrość filtrowania (jeśli jest używane). Zakres:
0(najbliższy) do7(najmniej wyraźny). Wartość domyślna to0. -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) na100(efekt maksymalny). Wartość domyślna to50 -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
1do4. Wartością domyślną jest4. Ta opcja nie ma zastosowania w przypadku metod 3 i nowszych, chyba że-low_memoryjest -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) do100(pełne pogorszenie). W przypadku średnio dużych obrazów przydatne wartości to zwykle30–70. 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ółczynnikpartition_limitokreś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_limitnie 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-mi-qmają 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
1do6. 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
widthxheight. -pre int- Określ kroki wstępnego przetwarzania danych. Użycie wartości
2spowoduje 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,fastlubbestw kolejności rosnącej złożoności i spowalniania. Wartość domyślna tofast. Wewnętrzne filtrowanie alfa jest wykonywane przy użyciu 4 możliwych prognoz (brak, pozioma, pionowa, gradient).bestbędzie kolejno testować każdy z trybów i wybrać ten, rozmiaru. Trybfastbędzie się starał tworzyć a priori prognozy bez testowania wszystkich trybów. -alpha_method int- Określ algorytm użyty do kompresji alfa:
0lub1. Algorytm0oznacza brak kompresji,1korzysta z bezstratnego formatu WebP do kompresji. Wartość domyślna to1. -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,picturelubgraph. -metadata stringRozdzielona 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,iccorazxmp. Wartość domyślna tononePamiętaj, że każdy format danych wejściowych może nie obsługiwać wszystkich kombinacji.
-noasmWyłącz wszystkie optymalizacje asemblera.
Błędy
Wszystkie błędy należy zgłaszać do narzędzia Issue Tracker: https://issues.webmproject.org.
Zapraszamy do korzystania z łatek. Na początek zajrzyj na tę stronę: 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 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).