Czy jest jakiś sposób, aby zabrakło pamięci w PHP GD image library? W przypadku przesłania zbyt dużego obrazu, GD ma tendencję do wyczerpania pamięci, kończąc skrypt. Chciałbym, żeby rzucił wyjątek chwytający lub coś podobnego, ale niestety.Niezawodny sposób, aby zapobiec wyczerpaniu pamięci w bibliotece obrazów GD? (PHP)
W tej chwili używam skleconego razem skryptu, który po raz pierwszy wydaje ini_set('memory_limit', '128M')
, jeśli to działa, jestem zwykle ustawiony. W zależności od konfiguracji serwera, choć może nie być to możliwe, powracam do algorytmu, który próbuje oszacować ilość potrzebnej pamięci (biorąc pod uwagę rozdzielczość, głębię kolorów, kanały i współczynnik krówki), a następnie porównuje ją z memory_get_usage()
, jeśli funkcja istnieje, w przeciwnym razie zgrubne oszacowanie.
Cała sprawa działa do tej pory, ale na pewno nie jest elegancka i kończy się niepowodzeniem w niektórych przypadkach. Czy istnieje lepszy sposób, aby to zrobić, tj. Czy GD zawodzi z wdziękiem, jeśli musi, zamiast zmielenia wszystkiego do zatrzymania?
Duże obrazy JPEG (nie-PNG lub inne typy) może być zmieniany podczas załadunku, zobacz tę odpowiedź dla dalszych szczegółów: http://stackoverflow.com/questions/12661/efficient-jpeg-image-resizing- in-php/4613341 # 4613341 –