Jak wsadowo zmienić rozmiar wszystkich zdjęć w folderze (w tym w podfolderach)?

11

Mam ogromną, 12 GB galerię na serwerze, pełną zdjęć w różnych podfolderach. Te pliki są zbyt duże i nie są używane w pełnej rozdzielczości. Muszę zmienić rozmiar wszystkich zdjęć do szerokości 820 pikseli (zachowując proporcje). Więc moje pytanie brzmi - jak mogę stworzyć jakiś skrypt indeksujący, który zmieniłby rozmiar wszystkich zdjęć większych niż 820px i zapisałby je z powrotem, zastępując oryginalny plik?

Mam nadzieję, że możesz mi pomóc :-) Z góry dziękuję.

G-Gore
źródło
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +zrobi je wszystkie; jeśli nie chcesz przetwarzać tych „mniejszych niż 820px”, znajdziesz tutaj kilka opcji .
don_crissti

Odpowiedzi:

13

Narzędzia ImageMagick konwertują lub mogrify wykonają zadanie.

Możesz je uzyskać za pomocą menedżera pakietów lub źródła / rpms tutaj: http://www.imagemagick.org/script/binary-releases.php#unix

Podstawowe użycie:

$ mogrify -resize 820x *.jpg

Jeśli potrzebujesz rekurencji:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

źródło
Nie sądzę, że „szerokość 820 pikseli (zachowanie proporcji)” oznacza „zmianę rozmiaru do 820 x 820”. Bardziej przypomina to „szerokość 820px i jakikolwiek odsetek jest wysoki”;) Ponadto nie obsługuje rekurencyjności.
Erathiel,
1
Słuszna uwaga. Edytowane!
Jeśli chcesz, aby zmienił rozmiar tylko wtedy, gdy są większe niż ustawione wymiary i nadal zachowują proporcje, możesz zmienić to na: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex
2
Uwaga: zastąpi to istniejące obrazy.
sudo,
Powiązane: Jak kontrolować stopień kompresji mogrify? (Super użytkownik)
Marc.2377,
5

Użyj convertdo wykonania pracy.

convert -resize "1024x768>" origIMG destIMGprzeskaluje origIMG do 1024x768 zachowując proporcje i zmieniając rozmiar tylko, jeśli obraz jest większy niż 1024, przechowując nowy obraz w destIMG. Następnie możesz przenieść destIMG do oryginału.

Użyj pętli, aby podróżować po wszystkich swoich katalogach lub użyj find.

YoMismo
źródło
Jak zmodyfikowałbyś to polecenie, aby nadpisać oryginalny obraz zmniejszonym, podczas powtarzania się find?
Simon East