Generowanie miniaturek za pomocą przygotowanego skryptu PHP


24 lipca 2012 / Michał Kortas


Pracuję właśnie nad jednym, sporym projektem, który wymusił na mnie przygotowanie skryptu tworzącego miniaturkę zdjęcia. Pomijając cały proces analizy kodu HTML, w poszukiwaniu ścieżki do odpowiedniego pliku, cała sprawa zamykała się na odnalezieniu niezbyt skomplikowanej klasy PHP, odpowiedzialnej za kadrowanie zdjęć. Najbardziej do gustu przypadła mi ta o nazwie PHPThumb. Paczka do pobrania znajduje się po adresem www.phpthumb.gxdlabs.com – już teraz ściągnijmy ją sobie na dysk.

W pierwszej kolejności rozpakujmy archiwum z klasą PHP i przenieśmy jego zawartość do katalogu ‚php‚, utworzonym w folderze ‚miniaturki‚. Struktura plików na serwerze powinna wyglądać więc w ten sposób:

Utwórzmy teraz dokument index.php i zapiszmy go bezpośrednio w folderze ‚miniaturki‚. Na samym początku uzupełnijmy go następującą treścią, odpowiedzialną za wykonanie kodu z pliku ThumbLib.inc.php.

Przyjmijmy też, że posiadamy plik graficzny o nieokreślonych z góry wymiarach. Wrzućmy go również do folderu ‚miniaturki‚.

W zmiennej $obrazek niech znajduje się ścieżka do wspomnianego pliku graficznego.

Jak wcześniej założyliśmy, nie znamy rozmiarów zdjęcia, a nasze miniaturki powinny mieć stały rozmiar 200×120[px], czyli ich kształt to prostokąt o szerokości większej niż wysokość.

Jak poznać rozmiary obrazka źródłowego? Skorzystajmy z funkcji getimagesize().

W tej chwili, w tablicy $rozmiar[], znajdują się wymiary zdjęcia, gdzie szerokość posiada identyfikator [0], a wysokość [1].
Do stworzenia miniaturki, przyda nam się współczynnik proporcji szerokości do wysokości. Pozwoli nam on określić kształt zdjęcia źródłowego. Wystarczy, że podzielimy jedną wartość przez drugą.

Jeśli grafika ma kształt poziomy, współczynnik będzie posiadał wartość większą od 1. Jeśli jest odwrotnie, przyjmie liczbę mniejszą od 1. W przypadku, kiedy zdjęcie jest kwadratem, zmienna $wspolczynnik będzie równa 1.

Zapiszmy teraz instrukcję warunkową, która przeskaluje nam źródłową grafikę do optymalnych rozmiarów.

W zmiennych $w i $h przechowywane są rozmiary zdjęcia, potrzebne do przeskalowania.

Na koniec pozostaje nam obcięcie nadmiaru wysokości (lub szerokości) i zapisanie miniaturki w innym katalogu, np. o nazwie ‚thumbs‚ – utwórzmy go sobie uprzednio wewnątrz folderu ‚miniaturki‚.
Skrypt obcina obrazek równo, po obu stronach i zapisuje go pod nazwą ‚mini.jpg‚.

Zabezpieczmy się jeszcze przed wykonywaniem skryptu w przypadku, gdy miniaturka obrazka została już wcześniej utworzona i znajduje się na serwerze. Znowu wykorzystamy instrukcję warunkową.

 

Oto nasza oryginalna grafika >> Zobacz
I miniaturka wykonana powyższym skryptem >> Zobacz

Po uruchomieniu naszego skryptu, zdjęcie zostanie przeskalowane i wykadrowane do załozonych rozmiarów. Wykonanie proste ale za to dość funkcjonalne. Mam nadzieję, że komuś się przyda.



Jedna odpowiedź do “Generowanie miniaturek za pomocą przygotowanego skryptu PHP”

  1. Wojtek pisze:

    Thumb najlepiej zapisywać w jednym formacie np .png a jako żródło dostajemy różne pliki. jest jakaś opcja w funkcji ::create ?aby zawsze zapisywać np w png?. Kawał dobrej roboty. Dzięki za udostępnienie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *