Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] błąd wyświetlania obrazków
Forum PHP.pl > Forum > PHP
lsmith
Witam. Mam oto taki kod:
  1. <?php
  2. $th_szer=140; //szeroko__ miniaturki
  3.  $plik="../maszyny/".$_GET['id']."a.jpg";
  4.  $plik_zr = ImageCreateFromJPEG($plik);
  5. $wys = imagesy($plik_zr); //pobiera wysoko__ i szeroko__ oryginalnego zdj_cia
  6. $szer = imagesx($plik_zr);
  7.  
  8. $th_wys=floor($th_szer * $wys / $szer); //oblicza wysoko__ miniaturki
  9. $thumb = ImageCreateTrueColor($th_szer,$th_wys); //tworzy minaturk_ o wyliczonych rozmiarach
  10. imagejpeg($thumb);
  11. ?>


i cały problem dotyczy ostatniej linijki.. z dokumentacji imagejpg powinien pokazać image w przeglądarce albo zapisać go do pliku (Output image to browser or file) ja natomiast zamiast obrazka widze ciąg jakiś dziwnych znaczków np. "�����JFIF���������>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ���C�    $.' ",#(7),01444'9=82<.342���C  2!!22222222222222222222222222222222222222222222222222�������"�������������� �������}�!1AQa"q2���#B��R��....." itd..

gdzieś w google wyczytałem, że może być problem z tą funkcją przy GD 1.8 i starszych.. no ale to odpada bo mam wersje ponad 2.0
chyba, że może funkcje myle.. nie wiem.. pomocy ;]
Zyryx
dodaj przed funkcją imagejpeg to:
Kod
header('Content-type: Image/jpeg');
lsmith
Próbowałem w kilku miejscach.. Przed samą funkcją powoduje taki błąd:
Warning: Cannot modify header information - headers already sent ...
i dalej znaczki robaczki sie pojawiają..

Kiedy wstawiam to na początku pliku pokazuje mi się adres do skryptu..
Nic sie nawet nie ładuje, tylko to widze np. http://localhost/remp/admin/show.php?id=4
-=Peter=-
Poczytaj o funkcji header() w manualu, to będziesz wiedział dlaczego wywala błąd. Możesz to ominąć włączając bufforowanie (w pierwszej linijce kodu ob_start(), w ostatniej ob_flush())
FireFox
Zyryx napisal o header masz link poczytaj o header'ach

funkcje ta stosuje sie zawsze przed wyswietleniem czegokolwiek
Cezar708
Cytat(-=Peter=- @ 7.08.2007, 09:40:08 ) *
Poczytaj o funkcji header() w manualu, to będziesz wiedział dlaczego wywala błąd. Możesz to ominąć włączając bufforowanie (w pierwszej linijce kodu ob_start(), w ostatniej ob_flush())


W tym przypadku buforowanie nic nie pomoże bo, owszem przeglądarka zrozumie że chodzi o jakiś obrazek, lecz jeśli coś zostało do niego dodane na początku lub na końcu (na przykład spacja) to i tak nie wyświetli się prawidłowo (jeśli w ogóle się wyświetli).

jak chcesz wyświetlić obrazek poprze php to MUSISZ ustawić odpowiednie headery i NIE MOŻESZ nic poza obrazkiem wysłać, czyli nawet pustej spacji. Szczególnie zwróć uwagę na to, żeby w kodzie nie było żadnych funkcji typu: echo *print* itp itd i żeby na początku pliku (przed <?php jeszcze) nie znajdowała się pusta spacja oraz żeby na końcu pliku (po ?> też nie znajdowała się nawet pusta spacja).
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.