Problem z imagecreatefromjpeg()

Pisząc funkcję, która miała robić miniaturki z obrazków z określonego folderu napotkałem „mały” problem. Mianowicie niektóre jpegi przechodziły funkcje bezproblemowo, natomiast niektóre wywalały taki bład:

Fatal error: Allowed memory size of 8388608 bytes exhausted
(tried to allocate 6400 bytes) in
/opt/lampp/htdocs/xampp/galeria/images/mini.php on line 27

Prymitywnie tłumacząc jpeg jest za duży by zastosować funkcję imagecreatefromjpeg(). Ciekawe jest to, że pliki które były „cięższe” od tych które nie chciały przejść funkcji, przechodziły przez skrypt bez problemów. Kluczem do rozwiązania tej całej sprawy jest fakt, iż tak naprawde plik .jpeg (i jeszcze wiele innych) to skompresowany obraz. A php żeby móc wykonywać na nim operacje musisz go zdekompresować. A zdekompresowany jpeg może „przytyć” z 250kB nawet do 8MB!

Co trzeba w takim razie zrobić ? Proste – jeżeli ma się dostęp do pliku php.ini, należy tam zmodyfikować jedną linijkę odpowiadajacą za wielkość pamięci. W moim przypadku zwiększam pamięć z 8 MB na 16 MB.

#php .ini
memory_limit = 16M;

Problem rozwiązany. Są też inne metody na zwiększenie limitu – zajrzyj tutaj ;-)

One Response to “Problem z imagecreatefromjpeg()”

  1. Świetny artykuł. Rozwiązał mój problem z tą funkcją php.