Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z obrazkiem
Forum PHP.pl > Forum > Przedszkole
misman
Kłopociki są, i może kto pomoże... winksmiley.jpg

W skrócie: Na stronie łobrazki mają się generować w locie z oryginału (pomniejszane) i dodatkowo mają nałożony watermark. Wynikowy obrazek wyświetlany jest poprzez:

Kod:
  1. <?php
  2. echo "<img src=\"uobrazek.php?srodek=$srodek_src\" alt=\"\" border=\"0\" /></a>";
  3. ?>


gdzie 'srodek' to właśnie ten 'watermark' generowany z obrazka (pomniejszonego $srodek_src), natomiast tło jest stałe (z innego obrazka)

oto uobrazek.php:

  1. <?php
  2.  
  3. header("Content-type: image/png");
  4. include_once ('functions_graph.inc');
  5.  
  6. $tlo_src = "./produkty/images/puste_biale_kolko.png";
  7. $srodek_src = $_GET['srodek']; // czytaj z argumentu linku
  8.  
  9. // zmniejsz fotosa do miniaturki
  10. $resajz = ResizePNG($srodek_src);
  11.  
  12. // a tu scal miniaturke z tlem (produkty)
  13. $merge = MergeProdPNG($tlo_src, $resajz);
  14. // ... i wyswietl efekt:
  15. echo DisplayPNG($merge);
  16. ?>



funkcje:

  1. <?php
  2. function ResizePNG($stary_png)
  3. {
  4. $rozmiar = GetImageSize($stary_png);
  5. $stary = ImageCreateFromPNG($stary_png);
  6. $colorTransparent = imagecolortransparent($stary);
  7.  
  8. $nowa_szerokosc = 100;
  9. $nowa_wysokosc = 100;
  10.  
  11. // Otwieramy nowy obrazek i nadajemy mu tło
  12.  
  13. $nowy_png = ImageCreateTrueColor($nowa_szerokosc, $nowa_wysokosc);
  14. imagefill($nowy_png, 0, 0, $colorTransparent);
  15. imagecolortransparent($nowy_png, $colorTransparent);
  16.  
  17. ImageCopyResized($nowy_png, $stary, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $rozmiar['0'], $rozmiar['1']);
  18.  
  19. // Pozbywamy się starego obrazka
  20. ImageDestroy($stary);
  21.  
  22. return $nowy_png;
  23. ImageDestroy($nowy_png);
  24. }
  25. ?>


  1. <?php
  2. function MergeProdPNG($tlo_src, $srodek_src)
  3. {
  4. $srodek = $srodek_src; // wiem, że głupie - ale to popłuczyny z eksperymentów, nie smiać się :)
  5.  
  6. $srodek_width = imagesx($srodek); 
  7. $srodek_height = imagesy($srodek);
  8.  
  9.  
  10. $obraz = imagecreatefrompng($tlo_src);
  11. ImageAlphaBlending($obraz, true);
  12.  
  13. ImageCopyMerge($obraz, $srodek, 15, 30, 0, 0, $srodek_width, $srodek_height, 100);
  14.  
  15. return $obraz;
  16. ImageDestroy($obraz);
  17. ImageDestroy($srodek);
  18. }
  19. ?>




  1. <?php
  2. function DisplayPNG($src)
  3. {
  4. header("Content-type: image/png"); //naglowek dla obrazka
  5.  
  6. ImagePNG($src);
  7.  
  8. // Zwalniamy zajętą pamięć
  9. ImageDestroy($src);
  10. }
  11. ?>


No i o co mnie chodzi...
Otóż to kurestwo działa pięknie pod Firefoxem, a natomiast pod exploderem nie chce. W sensie - zero błędów - tylko IE generalnie szcza na to, że ten złamany obrazek ma wyświetlić. Nawet gdy przedeklaruję wynikowy obrazek na np. gif czy jpg - IE ma mnie w rzyci (FF wyświetla) - czyli nie jestem przekonany, że to fabryczne ułomnosci IE w stosunku do formatu PNG - ale może ktoś mnie oświeci.. ?
Ręce mi opadają, gdzieś zapewne szczegół jakiś - ale może ktoś ze świeżym spojerzeniem wytknie mi prawdopodobne miejsca błędów...
help ! smile.gif
misman
A, i chciałem jeszcze uzupełnić... Wpadłem na pomysl, ze byc może to przez dublowanie nagłówka
  1. <?php
  2. header("Content-type: image/png");
  3. ?>
, ale zmiana w uobrazek.php :
  1. <?php
  2. //echo DisplayPNG($merge);
  3. ImagePNG($merge);
  4. //$gif = imagecreatefrompng($merge);
  5. //echo DisplayGIF($merge);
  6. // Zwalniamy zajętą pamięć
  7. ImageDestroy($merge);
  8. ?>


niczego nie wnosi. Pod FF działa, IE nie raczy wyświetlać obrazków. Pomysły mi się kończą... sad.gif
misman
Jako dodatkowe info - z logów apacza wynika, ze IE w ogóle nie pobiera tych obrazków z serwera, przy użyciu FF każżdy obrazek ma swój wpis "GET /sciezka/do/obrazka... "
Naprawdę nikt nie ma koncepcji, co z tym robić ? sadsmiley02.gif
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.