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ę.
linux
images
batch-jobs
G-Gore
źródło
źródło
find . -name "*.jpg" -exec mogrify -resize 820x {} +
zrobi je wszystkie; jeśli nie chcesz przetwarzać tych „mniejszych niż 820px”, znajdziesz tutaj kilka opcji .Odpowiedzi:
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:
Jeśli potrzebujesz rekurencji:
źródło
find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
Użyj
convert
do wykonania pracy.convert -resize "1024x768>" origIMG destIMG
przeskaluje 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
.źródło
find
?