![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, korzystając z funkcji imagecreatefromjpeg() otrzymuję błąd o przekroczeniu pamięci
Kod Fatal error: Allowed memory size of 67108864 bytes exhausted Serwerownia odpisała abym przerobił skrypt tak aby zużywał mniej pamięci więc teraz moje pytanie jak mogę utworzyć miniaturkę w php nie korzystając z tej funkcji lub zmniejszając zużycie tej pamięci? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witaj, niestety trochę zbyt mało podałeś informacji
![]() Pokaż kod jakim przerabiasz grafikę. Musisz tam mieć mocno coś zamotane skoro przekraczasz 64mb pamieci RAM. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Musisz tam mieć mocno coś zamotane skoro przekraczasz 64mb pamieci RAM. Skoro wczytuje obrazek przez funkcję i imagecreatefromjpeg() a obrazek ten ma ponad 60MB to raczej nic dziwnego, że mu pamięć przekracza
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Skoro wczytuje obrazek przez funkcję i imagecreatefromjpeg() a obrazek ten ma ponad 60MB to raczej nic dziwnego, że mu pamięć przekracza Nie wiemy czy dlatego mu przekracza czy nie bo nic więcej nie napisał - ani nie pokazał kodu ani nie podał rozmiaru obrazka itd. Równie dobrze może być to coś innego przed samym wczytaniem, które dobije skrypt. @autor pokaż kod dla pewności i napisz jakiej wielkości fotki tam ładujesz - wtedy się coś poradzi. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
64 MiB to obraz o rozdzielczości ok. 22 megapikseli po wczytaniu do pamięci, czyli nic specjalnie nadzwyczajnego. Jedyny sposób to przetwarzanie obrazu po kawałku, a nie w całości na raz.
GD się do tego nie nada, zaś bindingi PHP dla ImageMagicka nie obsługują chyba wszystkich opcji. Odpalając Imagicka z poziomu konsoli, możesz przy pomocy parametru -limit określić maksymalne wykorzystanie pamięci. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
No więc zdjęcia ma 6,45MB wymiary 2912x4368
Korzystałem z klasy do tworzenia miniaturek http://phpthumb.gxdlabs.com/ a potem zmieniłem cały proces tworzenia miniaturek do
ale poprawy nie ma. Może to być jeszcze związane z tym, że skrypt pobiera pliki w katalogu i po kolei w pętli tworzy te miniaturki
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zrób mały debug i zobacz ile pamięci zużywa przy każdej iteracji (memory_get_peak_usage(true)) i stosuj imagedestroy($canvas) i imagedestroy($org) po każdym zapisie.
EDIT: bzdurę dalej napisałem przepraszam - zapomniałem o pętli. Ten post edytował Sephirus 18.06.2013, 15:18:28 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
nic nie pomaga ;/
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Jak sobie wyobrażasz zmieścić to w pamięci?
2912x4368 = 12719616 x 3 bajty na kolor = 38158848 = ~37 MiB Nigdzie nie napisałeś, że zwalniasz dany zasób, to po dwóch iteracjach koniec. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 18:49 |