Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GD i problem z tłem obrazka
Forum PHP.pl > Forum > PHP
athabus
Witajcie,

mam problem z GD. Na localhost działa wszystko poprawnie, natomiast na serwerze produkcyjnym od kilku dni mam problem (przez 2 lata działało dobrze).

Problem polega na tym, że generuje obrazek z tłem o określonym kolorze np. czerwonym. Pierwsze wywołanie skryptu generuje czerwony prostokąt, ale każde następne już czarny. Po wgraniu pliku przez ftp sytuacja się powtarza - tj. pierwszy raz daje właściwy rezultat, potem już zawsze czarny prostokąt.

Uprościłem maksymalnie skrypt do postaci jak poniżej i problem dalej występuje.

  1. <?php
  2. $im=imagecreatetruecolor(150, 150);
  3. $color=imagecolorallocate($im,255,100,100); //kolor jasno czerwony prostokata
  4. imagefill($im, 0, 0, $color);
  5. $path= getcwd().'/test/123.jpg';
  6. imagejpeg($im, $path, 80);
  7. imagedestroy($im);
  8. ?>
  9.  
  10. <img src="/test/123.jpg">


Jak myślicie co może być przyczyną?
Kasyx
Hmm jesli możesz to dodaj
  1. header('Content-type: image/jpeg');
  2.  


A prócz tego wygląda w porządku. jedyne co przychodzi mi do głowy to niewłaściwa wersja bibliotek GD, którą sprawdzisz funkcją gd_info();

Możesz jeszcze spróbować zapisać obrazek w innym formacie (tak dla testów). Może coś nie tak jest z jpeg'ami. Jak coś takiego znajdziesz, to będzie pole wyjścia do szukania konkretnego rozwiązania
athabus
Dzięki Kasyx - próbowałem twoich rad ale nie pomogło. Z png też był problem.

Udało mi się jednak znaleźć przyczynę. Prawdopodobnie na serwerze produkcyjnym zostało zmienione GD i funkcja imagefill nie działała poprawnie z jakiegoś powodu. Zmieniłem ją na
  1. imagefilledrectangle($im,0,0,149,149,$color);

i póki co działa.
Nie pytajcie dlaczego bo nie wiem - przypuszczam że jakiś bug w GD.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.