[+] Convert i masowa zmiana wielko

Tematy związane z oprogramowaniem, instalacją, konfiguracją
darborc
Posty: 92
Rejestracja: 09 listopada 2007, 08:28
Lokalizacja: Rzeszów

[+] Convert i masowa zmiana wielkości plików graficznych

Post autor: darborc »

Witam.
Zacząłem dziś tworzyć galerię internetową i poszukuję jakiegoś sposobu żeby masowo zmieniać rozmiary plików. W internecie jest dużo na temat zmiany rozmiarów za pomocą php, ale ja bym chciał to robić inaczej. W necie wyszperałem że najlepiej to robić właśnie za pomocą convert

Kod: Zaznacz cały

convert plik_we -scale "wysxszer" plik_wy
Z tym że zmiana kilkuset plików pojedynczo niezbyt mnie raduje. Czy zna ktoś jakiś sposób automatyzacji? Próbowałem napisać jakiś skrypt ale jakoś nie za bardzo mi wychodzi, a google jakoś nie chce pomóc :-)
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

genobis
Beginner
Posty: 353
Rejestracja: 21 lipca 2008, 21:59
Lokalizacja: Trzebinia

Post autor: genobis »

No skryptem to tak, jak pokazujesz, prosta pętelka w bashu (tu jest bardzo przystępnie o pętelkach i innych zwierzach, przede wszystkim polecam część o pętli for: http://ultra.ap.krakow.pl/~bar/kursbasha/main.html ). A jak jesteś klikaczem, to np. GwenView+kipi plugins pozwala na przeprowadzanie takich operacji na wieeelu plikach.
darborc
Posty: 92
Rejestracja: 09 listopada 2007, 08:28
Lokalizacja: Rzeszów

Post autor: darborc »

Wiem że convert jest częścią pakietu imagemagik, już mam go zainstalowanego. Moje pytanie odnosi się raczej do tego jak by wyglądała składnia polecenia convert (ew. skrypt) by przetworzyć jednocześnie wiele plików, bo to co napisałem wcześniej przetwarza tylko jeden plik.
genobis pisze:No skryptem to tak, jak pokazujesz, prosta pętelka w bashu.
Faktycznie problem tkwił w złym zrozumieniu składni tego polecenia :-)
Dla leniwych w przyszłości skrypt który rozwiązuje problem i zapisuje wynik do osobnego katalogu:

Kod: Zaznacz cały

#!/bin/bash
for i in *.*]
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Zapomniałem o tym że convert należy do programu imagemagick.
Ale masz jest na forum:
http://debian.linux.pl/viewtopic.php?p=8871#8871
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

Ja skleciłem taki skrypt:

Kod: Zaznacz cały

#!/bin/sh

SIZE=800

mkdir ./thumbnails${SIZE}

until [ -z "$1" ]
do
  convert -strip -geometry ${SIZE}x${SIZE} -quality 80 "$1" ./thumbnails${SIZE}/${SIZE}_"$1".jpg
  shift
done
Nazwałem go 'convert800' (od rozmiaru) i umieściłem w ~/.gnome2/nautilus-scripts/.
Analogicznie zrobiłem jeszcze 'convert1024' i 'convert100', które różnią się oczywiście tylko wartością zmiennej 'SIZE'.

W ten sposób możesz robić masowa konwersje plików bezpośrednio spod Nautilusa: zaznacz grupę obrazków, prawy myszy i z menu wybierz Scripts->convert800. Stworzy Ci katalog 'thumbnalis800', a w nim zmniejszone pliki.

Poprawnie radzi sobie ze spacjami w nazwach plików.
ODPOWIEDZ