CodeIgniter IMG

Skalowanie i generowanie miniaturek w CodeIgniter

Spis treści

Prosta biblioteka do skalowania i generowania miniaturek w CodeIgniter – jest to odpowiednik pluginu Smarty “Thumb” autorstwa  Christoph’a Erdmann’a.

Źródła do pobrania z GitHuba .

Funkcje

  • generowanie miniaturek “w locie” na podstawie zadanych parametrów,
  • cache’owanie już raz zrobionych miniaturek,
  • przejrzysta struktura katalogów z miniaturkami,
  • funkcja do wyostrzania miniaturek,
  • możliwość kadrowania obrazków,
  • możliwość wypełniania “pustej” przestrzeni

Użycie

Plik img.php wgrywamy do katalogu application/libraries. W kontrolerze ładujemy bibliotekę poprzez polecenie:

$this->load->library('img');

W widoku wyświetlamy obrazek poprzez użycie funkcji:

echo $this->img->rimg($filename, array('longside' => 745, 'alt' =>  'alt text')

Dopuszczalne parametry:

  • longside – długość dłuższego boku (w pikselach), krótszy proprocjonalnie
  • shortside – długośc krótszego boku (w piskelach), dłuższy proporcjonalnie
  • crop – kadrowanie (true/false)
  • width – szerokość (musi występować razem z parametrem height)
  • height – wysokość (musi występować razem z parametrem width)
  • sharpen – wyostrzanie funkcja wyostrza obrazek po skalowaniu
  • nocache – nadpisywanie obrazka po utworzeniu w cache

Historia

Projekt pluginu “Thumb” autorstwa Christoph’a Erdmann’a powstał w okolicach 2006 roku i pozwalał na generowanie miniaturek w locie poprzez podanie odpowiednich parametrów podczas wyświetlania obrazka.

Rozwiązanie o tyle wygodne, że nie trzeba było generować miniaturek po wgraniu ich na serwer, a były one generowane na życzenia użytkownika, który wchodził na daną stronę i dostawał już przygotowaną miniaturkę w odpowiednich rozmiarach. Miniaturki były cache’owane.

Na dzień dzisiejszy projektu już nie ma (strona nie działa), ale gdyby ktoś jeszcze szukał źródeł towgrałem kopię  Smarty plugin “Thumb” na Google Storage

Problem polegał na tym, że nazwy cache’owanych plików były generowane jako wypadkowy hash z nazwy pliku i parametrów, więc usunięcie obrazka źródłowego nie dawało możliwości odnalezienia pliku z cache. Co w ofekcie powodowało setki, a czasami tysiące plików z miniaturkami.

Problem ten rozwiązałem poprzez tworzenie katalogów cache, z odpowiednimi nazwami. Czyli skalując plik do 64×64 możemy spodziewać się jego miniaturki właśnie tam, nazwa pliku będzie taka jak oryginału.