niedziela, 1 maja 2011

Jak automatycznie zmienić wielkość zdjęć, czyli imagemagick, convert, resize

Uczestniczę w tworzeniu serwisu internetowego, który będzie składał się z wielu zdjęć.

Zorganizowaliśmy walne zgromadzenie (2 osoby) i ustaliliśmy, że obrazy będą miały szerokość 420 pixeli (z wysokością to różnie bywa - będzie ona automagicznie dopasowywana).


Oczywiście każdy obraz można otworzyć za pomocą gimp'a, kliknąć na obraz i wybrać skaluj, ale jakoś mi to nie odpowiadało.

Więc na początku chciałem z wiersza poleceń sprawdzać jaką wielkość ma dany obraz (nie ma sensu zmniejszać czegoś co już i tak jest np. za małe).

Z pomocą przyszła mi biblioteka ImageMagick.

Sprawdzenie wielkości (w pixelach można wykonać w następujący sposób):
identify test.jpg

Wynik polecenia przedstawia się następująco:
test.jpg JPEG 420x216 420x216+0+0 8-bit DirectClass 25.2kb

Czyli z grubsza wiemy wszystko co chcieliśmy o tym jpegu.

Przyszedł czas na automatyczną zmianę wielkości zdjęć w wybranym katalogu, w połączeniu z pentlą:
for adres in $(ls); do convert $adres -resize '420' $adres ; done ;

Teraz po kolei jak to wszystko działa:
- przechodzimy do katalogu w którym są zdjęcia (trzeba sobie zrobić backup, bo w tym przykładzie zdjęcia zostaną nadpisane przez te o zmienionym rozmiarze),
- for adres in $(ls) - dla każdego pliku znajdującego się w bieżącym katalogu ...
- do convert $adres -resize '420' $adres ; done ; - wykonaj konwersję nazwa_obrazu.jpg wielkości do 420 pixeli szerokości;

Opcja -resize jest bardzo wygodna, ponieważ gdybym musiał podać od razu szerokość i wysokość zdjęcia wyglądałyby co najmniej dziwnie, byłyby za bardzo rozciągnięte w pionie lub w szerokości.

W apostrofach mogę więc podać:
- 'szerokośćxwysokość'
- 'szerokość'
- 'xwysokość'

Dzięki temu, że podałem samą szerokość wysokość jest automatycznie dopasowywana (do Twojej wersji filmu chciałoby się powiedzieć :>) do wersji obrazu.

Imagemagick potrafi znacznie więcej, w najbliższej przyszłości mam zamiar się jeszcze przyjrzeć
możliwości wstawiania automatycznie znaku wodnego

W ten sam sposób można generować miniatury obrazów, jeżeli z takich korzystacie - wystarczy podać mniejszą ilość pixeli, np. 100.

Brak komentarzy:

Prześlij komentarz