Holidaycheck.pl

Free Software Supporter


Support freedom

Google Translator

Polish Dutch English German Russian

Proszę kliknij 'Lubię to'


Designed by:
SiteGround web hosting Joomla Templates
Automatyczne przerabianie obrazków PDF Drukuj Email
( 3 Votes ) 4756 odsłon
Wpisany przez mslonik   
wtorek, 10 lutego 2009 20:32

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.

 
Komentarze (6)
coś od siebie
1sobota, 14 lutego 2009 19: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.
skrypt
2wtorek, 02 marca 2010 12:54
Tomasz
A w jaki sposób odpalić skrypt pod Windowsem xp czy 7??
Powershell mi jakieś błędy rzuca.
Dzięki za odpowiedż.
@Tomasz
3środa, 03 marca 2010 07: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
4czwartek, 04 marca 2010 18: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.
skrypt
5piątek, 05 marca 2010 15: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
Pod Windowsem nie potrzeba używać tego skryptu
6środa, 29 grudnia 2010 13: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.

Dodaj swój komentarz

Imię:
Twoja strona:
Temat:
Komentarz:
  Tekst do weryfikacji. tylko małe litery bez spacji.
Weryfikacja tekstu:
rzeczywistość postrzegana subiektywnie, Powered by Joomla! and designed by SiteGround web hosting