Artykuły

Automatyczne przerabianie obrazków

Ocena użytkowników:  / 0
SłabyŚwietny 

Od dawna marzyło mi się automatyczne przygotowanie obrazków (zdjęć) przeznaczonych na stronę internetową. Taka aplikacja powinna automatycznie zmniejszyć obrazki (zdjęcia) do dwóch wymiarów:

a. 640x (...)

b. 200x (...)


 

Czyli chciałbym, by zdjęcia w pełnym rozmiarze miały zawsze większy wymiar maksymalnie 640 pikseli, a miniatury 200 pikseli.

 

Jak łatwo się domyślić pierwszy obrazek reprezentuje obrazek w 'pełnym' rozmiarze - dopasowany jest do maksymalnej szerokości strony, a drugi to miniatura pierwszego.

 

Dodatkowo chciałem, by w obrazek w 'pełnym' wymiarze wtapiany był w lewym dolnym rogu tekst z adresem mojej strony.

 

Do realizacji tego zadania posłużyła mi wspaniała biblioteka ImageMagic (na licencji GNU). Z jej pomocą szybko skonstruowałem odpowiedni skrypt 'bash', który może posłużyć do budowy skryptu .php. Do moich celów póki co wystarczy.

 

Skrypt kopiujemy do tego samego katalogu, co zdjęcia, które zamierzamy poddać wyżej opisanym zmianom. Teraz wystarczy wykonać ściągnięty skrypt, np. tak:

 

:~$ sh napis_w_zdjeciu

 

Skoro już jestem przy bashu, to po zakończeniu działania skryptu, w katalogu, w którym zostały stworzone obrazki, warto wydać polecenie:

 

:~$ ls -1 --sort=time --reverse 640*.* 200*.*

 

czyli:
-1                 <- poustawiaj po jednej nazwie pliku w wierszu,
--sort=time   <- posortuj wg czasu powstania,
--reverse     <- odwroc sortowanie,
640* 200*    <- zastosuj tylko względem plików, których nazwy zaczynają się od 640 i 200.

 

Polecenie wylistuje jeden pod drugim wszystkie pliki, których nazwy zaczynają się od ciągów '640' oraz '200' akurat w takiej kolejności, by łatwo dało się z nich złożyć wywołanie slimbox. Wystarczy teraz zaznaczyć listę wynikową i przekopiować do artykułu w środowisku Joomla!, całość objąć nawiasami klamrowymi, dopisać ścieżki dostępu i skorzystać z dobrodziejstwa rozszerzenia slimbox. Reszta stanie się sama...

 

Do pobrania skrypt na licencji GNU.

Comments (6)
Pod Windowsem nie potrzeba używać tego skryptu
6środa, 29, grudzień 2010 12:35
Jdwind
Jest narządź M$ powertoys tutaj http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx Nazywa się Image Resizer, zaznacza się grupę zdjęć, naduś prawym mychy na pierwszym i z menu wybierasz Resize Image (czy jakoś tak). I jedzie grupowo, można wybierać własne rozmiary.
skrypt
5piątek, 05, marzec 2010 14:12
Tomasz
Dobra działa wszystko ok.
sposób postępowania:
1. instalacja Virtual PC 2007
2. Na maszynie instalujemy np. Ubuntu 9.10
3. Doinstalowujemy pakiet imagemagic
4. Upewniamy się czy pliki to *.jpg a nie *.JPG oraz nadajemy uprawnienia do folderu w którym są zdjęcia
5. Odpalamy Terminal, przechodzimy do folderu ze zdjęciami
wydajemy polecenie: sh napis_w_zdjeciu
6. gotowe
skrypt
4czwartek, 04, marzec 2010 17:27
Tomasz
Zgadza się że pod Windowsami banalne rzeczy z linucha czasami są praktycznie niewykonalne.
Wracając do tematu to przetestowałem cygwina i fajnie się zainstalował z uruchomieniem też nie było żadnych problemów. Nawet polecenia które pamiętałem z linucha wykonywał bezproblemowo. Więc do dzieła w home utworzyłem folder a w nim ja opisane w instrukcji parę plików *.jpg, skrypt i do dzieła. Na początku rzucił błędem że nie widzi *.jpg ale kapnąłem się że linux rozróżnia wielkość liter więc pozmieniałem na małe i skrypt przeszedł kilka linijek dalej ale później było już tylko gorzej. Nie wiedział jak wykonać prawie wszystkie polecenia i dałem sobie spokój.
Nagle wpadłem na genialny pomysł że skorzystam z wirtualizacji z którą mam na co dzień do czynienia i ściągam Mandriva Linux 2010 w wersji live.
Będę korzystał z darmowej udostępnionej przez Microsoft maszyny virtual PC 2007
Jak wszystko pójdzie ok opiszę co i jak.
nara.
@Tomasz
3środa, 03, marzec 2010 06:31
mslonik
Cóż, w systemach z rodziny M$ wykonanie nawet tak prostych operacji nastręcza sporo problemów. Przychodzą mi na myśl co najmniej dwa sposoby. Pierwszy to instalacja środowiska Cygwin (http://www.cygwin.com/), które m.in. służy do 'udawania' konsoli Bash w M$ Windows. Drugi sposób to wykorzystanie wspomnianego środowiska PowerShell oraz aplikacji ImageMagick przygotowanej specjalnie pod Windows (http://www.imagemagick.org/script/binary-releases.php?ImageMagick=rcdtnqk44r2cu3vu2p9c8d64o1#windows) i napisanie skryptów robiących dokładnie to samo, ale pod tym właśnie środowiskiem. Oczywiście jak zwykle diabeł tkwi w szczegółach. Gdyby się Pan jednak zdecydował pójść jedną z tych dróg i doszedł do celu, to proszę nie zapomnieć podzielić się wynikami z innymi np. poprzez publikację komentarza.
skrypt
2wtorek, 02, marzec 2010 11:54
Tomasz
A w jaki sposób odpalić skrypt pod Windowsem xp czy 7??
Powershell mi jakieś błędy rzuca.
Dzięki za odpowiedż.
coś od siebie
1sobota, 14, luty 2009 18:41
Flash
Ja bym to widział tak, aby skrypt sprawdzał, jaka wielkość, czy szerokość czy wysokość jest większa i dopiero tę krawędź dopasowywał do jakiegoś upatrzonego standardu... bo jeśli wysokość ma być dowolna, do skrypt taki przepuszcza przypadki zdjęć wąskich i wysokich, co mnie kilka razy na kilku stronach poirytowało. Inna sprawa to, że nigdy nie ma pewności, jakiej rozdzielczości używa odbiorca danej strony.

Add your comment

Your name:
Your email:
Your website:
Subject:
Comment:
 
Ochrona antyspamowa