Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Zmiana wielkości plików graficznych - GD2 imagecopyresampled
adif
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 12.06.2005

Ostrzeżenie: (0%)
-----


Witam szanownych kolegów.

Czy spotkaliście się może z problemem (a sądzę że tak) podczas przesyłania zdjęć JPG i tworzenia miniaturek, aby zdjęcie o określonych rozmiarach (szerokości) np. ok 4500 px lub większe powodowało przerwanie skryptu i błąd.

Oto fragment kodu, który obrabia przesyłane zdjęcia:
  1. $foto = imagecreatetruecolor($szer_big, $wys_big);
  2. $source = imagecreatefromjpeg($lokalizacja);
  3. imagecopyresampled($big, $source, 0, 0, 0, 0, $szer_big, $wys_big, $wymiar[0], $wymiar[1]);
  4. imagejpeg($big, $lokalizacja, 90)


W czym rzecz.

Testowałem przesyłanie fotek o różnych wagach (1, 2, 5, a nawet 8MB) i ponieważ tak mam serwer ustawiony że mogę przesyłać dość duże pliki to i różne rozdzielczości mają prawo się pojawić. I tutaj zaczynają się schody. Pliki o szerokości do ok. 4200px niezależnie od wagi przesyłają się ładnie, miniaturki tworzone są poprawnie. Dopiero przy próbie wysłania zdjęcia powyżej tych rozmiarów skrypt się wysypuje i co najlepsze nawet nie dostaję żadnego komunikatu błędu a jedynie białe tło przeglądarki.

W czym rzecz? Czy GD2 ma jakieś ograniczenia co do szerokości obrabianych plików czy może moim skryptom czegoś brakuje?

Jeśli problem się już pojawił na forum, a mi nie udało się znaleźć konkretnego postu proszę odeślijcie mnie do niego.

Z góry dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
kalmaceta
post
Post #2





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

Ostrzeżenie: (0%)
-----


Cytat
PHP has a maximum per-request memory limit configurable in php.ini
tylko mi do głowy przychodzi


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Zwiększ parametr memory_limit w php.ini.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tylko i wyłacznie memory limit. Duże zdjęcia są bowiem przetwarzane podczas createimagefrom* do formy własnego formatu biblioteki GD2, która to zawiera nieskompresowane RGBA + własne informacje. Same dane o kolorach to:
4B x 4500 x 3375 = 60750000B ~= 59326,17kB ~= 57,94MB
A gdzie jeszcze pamięć na resztę? Stąd posypie Ci przetwarzanie dużych obrazów wiele skryptów jeśli nie jesteś na to gotowy w konfiguracji.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
cojack
post
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Bo takiż rzeczy się nie robi w php, piszesz skrypt w bashu, i go wykonujesz z php, wykona się wiele wiele szybciej, ostatnio sprawdzałem to na imagemagick. Generowałem miniaturki pdfów.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
adif
post
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 12.06.2005

Ostrzeżenie: (0%)
-----


dziękuję za szybkie odpowiedzi. W poniedziałek będę testował, dam znać co i jak. pozdrawiam
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@cojack: Ale zdajesz sobie sprawę, że GD to program napisany w C (strona projektu), a rozszerzenie gd to jedynie interfejs? I narzut spowodowany tym interfejsem jest pewnie porównywalny do narzutu innych interfejsów jak chociażby tego do wywoływania poleceń w bashu? Innymi słowy: głupoty wypisujesz.
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Crozin:

Cytat
ostatnio sprawdzałem to na imagemagick.


nie wiem o czym Ty do mnie piszesz.

Ten post edytował cojack 23.01.2011, 11:54:50


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
adif
post
Post #9





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 12.06.2005

Ostrzeżenie: (0%)
-----


Witajcie.

Sprawdziłem na serwerze wartość memory_limit = wynosi ona 128M.

Niestety nie można zwiększyć już tej wartości (zasady bezpieczeństwa - tak tłumaczą się administratorzy), zatem pozostaje chyba tylko sprawdzać szerokość przesyłanego zdjęcia i blokować wykonywanie skryptu powyżej jakiejś wartości (w moim przypadku ok. 4200px).

Chyba że macie jakiejś jeszcze inne pomysły.

Dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:33