Jak mogę kompresować obrazy?

25

Mam 5000 zdjęć, które muszę skompresować (aby wyświetlić na mojej stronie).

Jestem nowy w Ubuntu. Więc co mam zrobić?

użytkownik2950593
źródło
@MostafaAhangarha: Nie powielony. Proszę przeczytać moją odpowiedź askubuntu.com/a/781588/9598 i ponownie rozważyć swój głos, aby nie zamknąć tego pytania. Ten jest dobry. Dziękuję Ci!
Geppettvs D'Constanzo

Odpowiedzi:

21

Używam Trimage bardzo prosty w użyciu.

dodaj tylko zdjęcie i skompresuj, aby zainstalować:

sudo apt-get install trimage

wprowadź opis zdjęcia tutaj

Mohamed Slama
źródło
2
Nie widzę żadnych ustawień, za pomocą których mógłbym zdefiniować stopień kompresji, jaki chciałbym, rozmiar pliku itp.
Rico
46

Słowo „kompresja” wydaje się być źle interpretowane w tym pytaniu, ale wciąż jest poprawne w zależności od kontekstu, w którym chcesz to zobaczyć.

Sceneria

Spójrzmy prawdzie w oczy, że projektanci stron internetowych, programiści i / lub mistrzowie stron internetowych muszą „skompresować” nasze pliki obrazów, aby były wystarczająco „lekkie”, aby można je było szybko przesłać do naszego hostingu, jeśli pracujemy bezpośrednio na prawdziwym środowisku produkcyjnym. Co nie będzie miało wpływu, jeśli będziemy pracować w lokalnym środowisku produkcyjnym testującym.

Wiele odpowiedzi wydaje się odnosić do innych rzeczy, głównie spowodowanych - prawdopodobnie - nie spotkały się z taką scenerią. Dlatego zaczynam to wyjaśniać.

Więc. Rozumiemy, co należy rozwiązać w odpowiedzi:

  1. Obraz MUSI być lekki
  2. Obraz MUSI być „skompresowany”, aby stracić rozmiar pliku, ale nie „rezizowany”, o czym wspomniał inny użytkownik, który wskazał na duplikat kompresji i zmiany nazwy partii JPG (znaleźć -exec, xargs, piping?)
  3. Zdjęcia powinny być skompresowane wsadowo, najlepiej za pomocą GUI.

Lekki obraz

Najpierw zrozummy, jaki powinien być „lekki obraz”.

Zdjęcia w wysokiej rozdzielczości o rozdzielczości ponad 1024px mogą mieć duży rozmiar pliku. Podaję przykład na tym zrzucie ekranu:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

W oknie właściwości pliku możemy zobaczyć, że jest to plik 9,5 MB, który bardzo opóźni przesłanie i opóźni w celu renderowania na ekranie po opublikowaniu na stronie internetowej.

Niemniej jednak rozmiar obrazu i rozdzielczość siatki są naprawdę przydatne do drukowania w wysokiej rozdzielczości. To inna sceneria, której nie wyjaśnię w tym wyjaśnieniu.

Więc jak mogę użyć tego obrazu na stronie internetowej, nie czekając lat, aby przesłać i czekać jeszcze kilka lat, aby pokazać go na mojej stronie?

Plik powinien zostać skompresowany.

Kiedy mówimy o „kompresji”, musimy wyraźnie zmienić jej jakość, aby była użyteczna w przypadku, w którym mamy do czynienia.

Więc upuśćmy następny w terminalu:

convert seminario-tabloide.png test.jpg

Spowoduje to konwersję formatu PNG wysokiej rozdzielczości do formatu „skompresowanego” JPG, który sam w sobie jest mniejszym plikiem! Idzie z 9,5 MB do 2,4 MB.

wprowadź opis zdjęcia tutaj

Jeszcze duży?

Ale 2,4 MB to jeszcze duży rozmiar pliku. Zagrajmy teraz z innymi poleceniami konwersji ImageMagick , aby utworzyć mniejsze rozmiary plików:

convert test.jpg -quality 50% test-50p.jpg

To właśnie musimy zrobić, aby „skompresować” obraz. Spowoduje to obniżenie jakości obrazu o 50% i zapewni rozmiar pliku 938,4 KB <=== (Uwaga: KILOBYTES, nawet megabajt).

Możemy pójść dalej i stworzyć mniejszy rozmiar pliku, dostosowując wartość procentową w tym samym poleceniu za pomocą:

convert test.jpg -quality 30% test-30p.jpg

Pamiętaj, że w tym przykładzie obniżamy jakość pliku, a nie wymiary obrazu. Co spowoduje skompresowanie pliku, na który nie ma to wpływu wizualnego podczas renderowania na ekranie, ale zobaczysz artefakty podczas drukowania na dużym formacie papieru (większym niż litera).

Zmiana rozmiaru + Kompresja = Super Cool!

Teraz. Możemy zrobić coś innego. Rzeczywiście kilka rzeczy: możemy najpierw zmienić rozmiar obrazów i zastosować kompresję, co spowoduje mniejszy rozmiar pliku niż oryginał i zapewni użyteczny obraz do renderowania na ekranie, nie tak dobry do drukowania, ale wydaje się, że chcesz wyświetlić go na ekranie, a nie na drukowanym banerze, prawda?

Zróbmy to:

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

W tej instrukcji prosimy o zmianę rozmiaru obrazu na 1024 piksele o dowolną liczbę pikseli, aby nie stracić współczynnika kształtu.

Teraz ... zgadnij co?

Rozmiar pliku został zmniejszony z 9,5 MB do ... (muzyka z congas, proszę) 433,7 KILOBYTES

Jeśli chcemy maksymalnie skompresować taki maksymalnie skompresowany plik, napotkamy trochę danych ogólnych wstawionych do pliku, co spowoduje większy rozmiar pliku. Więc nie zasugeruję, żebyś spróbował, ale jeśli oczekujesz ode mnie przykładu, ok ... Proszę bardzo!

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

I przeszliśmy z 433,7 KB do 176,2 KB w jednym poleceniu. Ten przykład był udany, nie należy jednak spodziewać się, że jakiekolwiek ćwiczenia spowodują zmniejszenie rozmiaru pliku. Ale możesz się dobrze bawić, wykonując tego rodzaju ćwiczenia.

Proces wsadowy

O! Ale prawie zapomniałem o jednej potrzebie: z łatwością zastosowałem ten proces do wielu zdjęć.

W tym celu możemy to zrobić za pomocą dwóch procesów.

Terminal

Jest to szybsze i łatwiejsze. Powiedzmy więc terminalowi, że musimy uruchomić tę samą instrukcję we wszystkich plikach w katalogu, po czym wyjaśnię inną instrukcję.

Konwertuj wszystko na 1024px (możesz użyć dowolnej ilości pikseli)

for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;

W tym miejscu prosimy polecenie uruchomienia tej samej instrukcji dla wszystkich plików w katalogu, zastosowania transformacji i upuszczenia kopii o innej nazwie, aby ułatwić wybór.

Zmniejsz jakość o wartość procentową (użyj dowolnego procentu, jaki chcesz) do wszystkich zdjęć w katalogu:

for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;

W tym miejscu prosimy o zmniejszenie jakości obrazów w celu zmniejszenia ich rozmiaru pliku.

Możesz grać tymi poleceniami i zobaczyć swoje wyniki. Po kilku godzinach zabawy będziesz ekspertem.

Skrypt Nautilus

20 kwietnia 2015 r. Stanąłem w obliczu takiej sytuacji, jak pierwotne pytanie, więc musiałem przeprowadzić badania i poprosić o pomoc w zadaniu. Dlatego teraz dużo o tym wiem. Nie sądzę, że urodziłem się z tą wiedzą, człowieku.

Jeśli nie jesteś przyzwyczajony do terminali i / lub chcesz korzystać z GUI, aby po prostu wybrać grupy plików i zastosować transformacje, możesz utworzyć własny skrypt działań Nautilus, aby po prostu kliknąć grupę plików prawym przyciskiem myszy i wybrać opcja z menu kontekstowego.

Aby uzyskać instrukcje, jak to zrobić, przeczytaj pytanie, odpowiedź i komentarz tutaj: Jak przetwarzać wsadowo obrazy JPG, aby zmienić jego jakość za pomocą Nautilus-Actions?

Powodzenia!

Geppettvs D'Constanzo
źródło
1
Oto odpowiedź „naucz mnie łowić ryby”. convertUmiejętności wiersza poleceń ImageMagick są świetne.
Charney Kaye,
Solidny! Użyłem edytora tekstu Sublime Text w trybie wielu kursorów, aby szybko zmienić kilka poleceń jednocześnie, aby uzyskać „kompresję” partii zdjęć. Właśnie użyłem convert photo.jpg -quality 70% photo_compressed.jpgformatu polecenia i działało świetnie! Nawet ustawienie kompresji tylko na 70% oryginalnej jakości zmniejszyło rozmiar zdjęcia do ~ 37% oryginału, ponieważ efekt jest powiększony poprzez bycie na osi x i y.
Gabriel Staples
Fantastyczne wyjaśnienie tak często niezrozumianych pojęć. Dla kompletności dodam, że do przetwarzania wsadowego można również użyć mogrify ImageMagick zamiast konwertować, w którym tworzę folder do przechowywania wyników, a następnie po prostu przetwarzam w tym folderze, który również porządkuje. Na przykładmogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Dennis
0

Jeśli chodzi o obrazy JPEG, de facto kompresja nie jest możliwa. Ponieważ jpeg jest z definicji skompresowanym formatem pliku (wszystkie szumy i niepotrzebne piksele są już usunięte). Możesz je dobrze spakować, ale całkowity rozmiar pozostanie mniej więcej taki sam. Jedynym zaawansowanym algorytmem kompresji, jaki znam dla JPEG, jest zipx. Ale zipx jest zastrzeżony przez Winzip i zapewnia maks. rozmiar zmniejszony o 30% (w trybie archiwum zipx).

Aby wyświetlać obrazy w Internecie, najpierw powinieneś zmienić ich rozmiar (poniżej 1 MB na każdy) i opcjonalnie przekonwertować je na format pliku png. PNG (= przenośna grafika sieciowa) jest specjalnie zoptymalizowany pod kątem szybszego przesyłania danych i szybszego wyświetlania. Zaawansowani użytkownicy mogą nawet konwertować te obrazy do formatu webp (format Google do zdjęć, algorytm najszybszego ładowania).

Możesz grupowo konwertować zdjęcia za pomocą XnConvert, a następnie wsadowo zmieniać rozmiar zdjęć za pomocą XnView. Pobierz pakiet deb stąd: http://www.xnview.com/de/xnviewmp/#downloads , a następnie kliknij go prawym przyciskiem myszy i otwórz za pomocą Gnome Software.

Jeśli nie zależy Ci na szybkości ładowania sieci, ale zależy Ci na jakości, powinieneś pozostawić swoje zdjęcia nietknięte i stworzyć dla nich bibliotekę cyfrową. Może prześlij je na publiczny serwer (Yahoo, Google itp.).

ipse lutnia
źródło
3
Możesz wspomnieć o różnych opcjach kompresji / jakości JPEG; całkiem możliwe jest zmniejszenie rozmiaru pliku obrazu JPEG poprzez zwiększenie jego kompresji (a tym samym obniżenie jego jakości).
Nick Weinberg,
1
Moje rozumienie kompresji oznacza eliminowanie niepotrzebnych pikseli przy zachowaniu tej samej jakości. Zmniejszanie jakości to nie kompresja, to po prostu zmniejszanie lub próbkowanie w dół. Kompresja bezstratna jest możliwa dzięki formatowi zipx, który świetnie sprawdza się w przypadku zdjęć seryjnych. Tworzy pewnego rodzaju nakładający się / przeładowany stos podobnych zdjęć, na którym wszystkie podwójne piksele są spłaszczane na osobnej warstwie, coś podobnego do pliku .css na stronie internetowej. Powtarzające się piksele są zdefiniowane jako oddzielne elementy w archiwum.
ipse lutute