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ę.


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 {} \;

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,


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.


Jak zmodyfikowałbyś to polecenie, aby nadpisać oryginalny obraz zmniejszonym, podczas powtarzania się find?
— Simon East
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.