Jak zmniejszyć rozmiar pliku obrazu
Formularz wymaga pliku poniżej 2 MB, a moje zdjęcie ma 8 MB. Co właściwie mam zmienić?
Trzy dźwignie, z których jedna dominuje
Każdy kompresor obrazu pociąga jakąś kombinację trzech dźwigni: ile pikseli ma obraz, ile szczegółów wolno odrzucić koderowi i w jakim formacie zapisuje wynik. Ludzie sięgają najpierw po suwak jakości, bo to jego każde narzędzie pokazuje w pierwszej kolejności. Zwykle jest to złe miejsce na start.
Dominują wymiary, bo rozmiar pliku skaluje się mniej więcej z liczbą pikseli, a liczba pikseli rośnie z kwadratem wymiaru liniowego. Zmniejszenie szerokości i wysokości o połowę zostawia jedną czwartą pikseli. Nic, co da się zrobić suwakiem jakości, nie jest tak rozstrzygające i nic innego nie kosztuje tak mało w odczuwanej jakości — pod warunkiem że wynik nadal jest większy niż pole, w którym będzie wyświetlany.
Policz, ile pikseli naprawdę potrzebujesz
Aparat we współczesnym telefonie robi zdjęcia o szerokości rzędu 4000 pikseli. Zdjęcie na pełnym ekranie laptopa wyświetla się przy szerokości mniej więcej 1500 do 2000 pikseli, a zdjęcie wewnątrz artykułu często przy 800. Wysłanie 4000 pikseli do pola, które pokazuje 800, oznacza, że około 96 procent pikseli zostanie odrzucone przez oprogramowanie odbiorcy już po pobraniu.
| Dłuższa krawędź | Przybliżona liczba pikseli | Udział w oryginale 4000 px |
|---|---|---|
| 4000 px | 10,7 miliona | 100% |
| 2560 px | 4,4 miliona | 41% |
| 1920 px | 2,5 miliona | 23% |
| 1280 px | 1,1 miliona | 10% |
| 800 px | 0,4 miliona | 4% |
Te procenty to arytmetyka, a nie pomiar konkretnego pliku — skompresowany plik nie kurczy się dokładnie proporcjonalnie do liczby pikseli. Mimo to warto patrzeć na nie w pierwszej kolejności, bo mówią, ile miejsca zmiana rozmiaru daje koderowi, zanim będzie musiał zacząć odrzucać szczegóły.
Co robi suwak jakości
W koderze JPEG liczba jakości skaluje tablicę dzielników stosowanych do współczynników częstotliwościowych każdego bloku 8×8. Niższa jakość to zgrubniejsze dzielenie, czyli więcej współczynników zaokrąglonych do zera, czyli mniej bitów. Widoczny koszt pojawia się najpierw przy ostrych krawędziach i w płynnych gradientach: obwódki wokół tekstu i pasy na niebie.
Skala nie jest liniowa i nie jest porównywalna między formatami. Jakość 80 w koderze JPEG, w koderze WebP i w koderze AVIF to trzy niepowiązane liczby, które przypadkiem mają wspólny zakres. Oceniaj wynik, patrząc na niego w pełnym rozmiarze, a nie ufając liczbie.
Dlaczego rozmiar docelowy to szukanie, a nie ustawienie
Żaden koder nie przyjmuje polecenia „zrób z tego 500 KB”. Przyjmuje ustawienie jakości i produkuje taki rozmiar, jaki to ustawienie daje dla tego konkretnego obrazu. Narzędzie, które oferuje ci rozmiar docelowy, prowadzi więc poszukiwanie: zakoduj, zmierz, popraw jakość, zakoduj ponownie i zatrzymaj się, gdy wynik zmieści się w budżecie albo gdy osiągnięta zostanie dolna granica jakości.
Dlatego cel jest zawsze realizowany w miarę możliwości. Szczegółowe, zaszumione zdjęcie w wysokiej rozdzielczości może nie zmieścić się w ciasnym budżecie przy żadnej jakości, którą człowiek zaakceptuje, a uczciwą reakcją jest zatrzymać się na dolnej granicy i powiedzieć, gdzie to nastąpiło, zamiast brnąć dalej, aż obraz będzie zrujnowany. Narzędzia rozmiaru docelowego w FileSlimmer najpierw zmniejszają wymiary, potem zawężają jakość między granicami i podają ustawienie, na którym skończyły.
Jak zejść ze zdjęciem poniżej 1 MB
Zacznij od zmniejszenia zdjęcia z telefonu do największych wymiarów, jakich potrzebuje miejsce docelowe. Dla poczty, formularzy i zwykłych stron internetowych jest to często dużo mniej niż oryginał z aparatu. Potem zakoduj świeży plik JPEG lub WebP przy wysokiej, ale nie maksymalnej jakości, zmierz wynik i obniżaj jakość stopniowo tylko wtedy, gdy plik nadal przekracza 1 MB.
Sama jakość nie przesądza o tym, czy wynik zejdzie poniżej 1 MB, bo szczegółowe obrazy potrzebują więcej danych niż proste. Jeśli pierwsze podejście nie trafi w limit, zmniejsz wymiary, zanim zaczniesz siłowo obniżać jakość. Zwykle zachowuje to bardziej naturalny wygląd obrazu niż utrzymanie każdego piksela przy silnych artefaktach blokowych i obwódkach.
Rzeczy, które nie pomagają
- Wrzucenie pliku do archiwum ZIP. W skompresowanych formatach obrazu nie zostaje prawie żadna nadmiarowość, którą uniwersalny kompresor mógłby znaleźć; archiwum ma zwykle rozmiar oryginału z dokładnością do błędu zaokrąglenia.
- Zmiana rozszerzenia. Bajty się nie zmieniają, a program, który czyta faktyczną sygnaturę pliku, po prostu się pogubi.
- Ponowny zapis pliku JPEG przy tej samej jakości. To drugi stratny przebieg: plik nie maleje w żaden użyteczny sposób, a obraz robi się nieco gorszy.
- Usuwanie metadanych ze zdjęcia, jeśli chodzi ci wyłącznie o rozmiar. Kilka kilobajtów EXIF przy kilku megabajtach pikseli to szum. Usuwaj je ze względu na prywatność, bo ten powód jest realny, a nie dla rozmiaru.
Postępowanie, które zwykle prowadzi do celu
- Ustal największy rozmiar, w jakim obraz kiedykolwiek będzie wyświetlany, i przeskaluj dłuższą krawędź do tej wartości.
- Wybierz format pasujący do treści: stratny do zdjęć, bezstratny do zrzutów ekranu i płaskiej grafiki.
- Zacznij od wysokiej, ale nie maksymalnej jakości i schodź w dół, aż zobaczysz szkody, a potem wróć o jeden krok w górę.
- Obejrzyj wynik w pełnym rozmiarze, na takim ekranie, dla jakiego jest przeznaczony.
- Jeśli nadal jest za duży, wróć do pierwszego kroku. W wymiarach niemal zawsze jest więcej zapasu niż w jakości.
Gdzie to przestaje działać
Niektóre obrazy opierają się temu wszystkiemu. Zeskanowany dokument pełen drobnego tekstu potrzebuje swoich pikseli, żeby pozostać czytelnym, więc zmniejszanie szkodzi natychmiast, a obniżenie jakości produkuje dokładnie te artefakty, które utrudniają czytanie tekstu. Zrzut ekranu z arkusza kalkulacyjnego ma ten sam problem. Dla nich właściwą odpowiedzią jest często inny format — bezstratny albo PDF — a nie mniejsza liczba kilobajtów.
A jeśli portal odrzuca twój plik, sprawdź, czy limit dotyczy rozmiaru pliku, czy wymiarów w pikselach. To dwa różne limity i plik, który przechodzi jeden, może wciąż nie przejść drugiego.
Narzędzia do tego zadania
Źródła
- ITU-T T.81 — quantisation and the JPEG quality scale
- MDN — Image file type and format guide
- MDN — Responsive images and choosing a display width