ImageMagick - skalowanie zdjęć 2007-03-05

Skalowanie zdjęć jest operacją dość często stosowaną, zwłaszcza gdy chcemy komuś posłać na emaila np. zdjęcia z imprezy. Wysyłanie w oryginalnym rozmiarze mija się z celem (wydłuża czas wysyłania i ściągania).

Nie wiem jak to zrobić pod windowsem (pewnie jakiś program ma taką opcję), ale linux zawsze wydawał mi się odpowiedni do takich rzeczy. Prosty skrypt w sh + ImageMagick (pakiet narzędzi do obróbki zdjęć) i gotowe.

Treść skryptu skalowanie.sh:

#!/bin/sh

for i in *;
do
        echo File \'$i\' resizing..
        convert "$i" -resize 50% "normal$i" ;
done

Przykładowe wywołanie, które utworzy przeskalowane zdjęcia z danego katalgu:

$ ./skalowanie.sh *.jpg
Linux, imagemagick, sh, shell, skalowanie, zdjęcia, artykuł, blog Techblog, imagemagick, sh, shell, skalowanie, zdjęcia, artykuł, blog

Słowa kluczowe: Linux, Techblog, imagemagick, sh, shell, skalowanie, zdjęcia, artykuł, blog

Komentarze i opinie
cimlik
2007-03-05 16:37

W Windowsie zrobienie miniaturek też nie jest specjalnym problemem, wystarczy odpowiedni program - choćby BIMP.

2007-03-05 19:24

Albo IrfanView... ;p

2007-03-05 19:33

Albo XnView - btw. jest też wersja linuksowa, niestety nieco zapóźniona w rozwoju.

GiM
2007-03-06 16:43

erm ten tego i on (bimp, irfanview) tak sam śmignie wszystkie na raz?

cimlik
2007-03-06 17:35

@GiM: nie wiem właśnie (chyba nie), dlatego wpisałem BIMP-a :D.

2007-03-06 17:36

XnView śmignie. I w Windows i w Linuksie.

andrzej
2007-03-07 11:49

ale skryptem z konsoli jest koszerniej i fajniej!

2007-03-07 17:23

Można się zdziwić, jeśli nazwa pliku będzie zawierała spację... :) Dodatkowo czemu przeskalowany obrazek ma mieć w nazwie 'normal' ? ;)
Proponuję:
echo "File \'$i\' resizing..."
convert "$i" -resize 50% "thumb_$i" ;

2007-03-07 20:49

Dzięki za cudzysłowie, zaraz poprawie. Co do słowa 'thumb' to yyy to nie jest bynajmniej robiona miniaturka ;)

2007-04-13 19:17

Gwenview w linuksie umożliwia skalowanie etc. wszystko w trybie graficznym i myslę że to duzo lepsze rozwiązanie niż konsola i przedstawiony skrypt ;p bo można wybierac pliki z różnych źródeł ;) okreslac parametry oraz wybrac katalog docelowy itp. itd.

2007-05-06 00:31

Ja to robie ustawiają konkretną rozdzielczość:
#!/bin/sh
for img in `ls $1*.jpg`
do
echo
convert -verbose -sample 800x600 $img $img
done
exit 0

Mustang
2008-10-26 06:29

A co jak masz mniejsze fotki i nie trzeba ich przeskalować ?

2010-05-26 09:47

Jeśli ktoś lubi pracować w interfejsie graficznym, i chciałby przeskalować pojedyncze zdjęcia za pomocą podanej tutaj metody to polecam zrobienie sobie skryptu wykorzystującego XDialog http://xdialog.free.fr/

Moja wersja napisana dla xdialog wygląda następująco:

#! /bin/bash

# parametry okna
ti='Program scale' # tytol okna
bti='scale' # podtytol okna
di='15 90' # rozmiar okna

# okno 1
st='Skrypt przeskaluje zdjecie do procentowo zadanego wymiaru.'
Xdialog --title "$ti" --backtitle "$bti" --msgbox "$st" $di

# okno 2
st='Podaj nazwę pliku zdjęcia które chcesz przeskalować'
Xdialog --title "$ti" --backtitle "$bti" --inputbox "$st" $di nazwa_foto.jpg 2>/tmp/.tmp_n$$

# okno 3
st='Podaj liczbę % przeskalowania: 100 -rozmiar oryginalny, 50 -zmniejszeni o połowę, 150 -powiększenie'
Xdialog --title "$ti" --backtitle "$bti" --inputbox "$st" $di 50 2>/tmp/.tmp_p$$

#skalowanie zdjecia
n=$(2</tmp/.tmp_n$$)
p=$(2</tmp/.tmp_p$$)
convert "$n" -resize "$p%" "scale_$n"

# okno 3
st="$n zostało przeskalowane do wymiaru $p% oryginału i znajduje się w katalogu domowym"
Xdialog --title "$ti" --backtitle "$bti" --msgbox "$st" $di

#usuwanie plików tmp
rm /tmp/.tmp_n$$ /tmp/.tmp_p$$

Nowy komentarz
 
 
Projektowanie i tworzenie stron www w PHP5. Opisy i recenzje oprogramowania typu cms, blog, wiki, open source.