Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze zmiana wielkości zdjęcia bez zapisu.
Forum PHP.pl > Forum > PHP
Mylek
Witam
Mecze się od jakiegoś czasu z tym aby mój portalik wyświetlał nieco zmniejszone zdjęcie.
Tworzona jest miniaturka na dysku i z tym niema żadnego problemu.
Problem pojawia się gdy chce zmniejszyć zdjęcie i wyświetlić je bez zapisywania na dysku.
Funkcja do zmiany rozmiaru zdjęcia wygląda tak:
  1. public function TworzMniejszeZdjecie($plik,$docelowa_szerokosc=500,$docelowa_wysokosc=500)
  2. {
  3. // Pobranie orginalnych parametrów i kalkulacja skali
  4. list($szerokosc, $wysokosc) = getimagesize($plik);
  5. $xskala=$szerokosc/$docelowa_szerokosc;
  6. $yskala=$wysokosc/$docelowa_wysokosc;
  7.  
  8. // Kalkulacja nowego rozmiaru
  9. if ($yskala>$xskala){
  10. $nowa_szerokosc = round($szerokosc * (1/$yskala));
  11. $nowa_wysokosc = round($wysokosc * (1/$yskala));
  12. }
  13. else {
  14. $nowa_szerokosc = round($szerokosc * (1/$xskala));
  15. $nowa_wysokosc = round($wysokosc * (1/$xskala));
  16. }
  17.  
  18. // Zmiana rozmiaru orginalnego obrazu
  19. $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  20. $obrazek_tymczasowy = imagecreatefromjpeg ($plik);
  21. imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  22.  
  23. return $obraz_zmiana_wielkosci;
  24. }

a tu kod strony:
  1. <?php
  2. require_once('lib/obiekt_galerii.php');
  3. require_once('lib/zdjecie.php');
  4. require_once('bazowa.php');
  5. class pokaz_zdjecie extends strona
  6. {
  7. public function WyswietlZawartosc()
  8. {
  9. echo "<div id=\"str\">";
  10. $id = $_GET['id']; //pobiera zmienna
  11. $baza = new obiekt_galerii;
  12. $baza = $baza->PolaczMySQL();
  13. $wynik = $baza->query("SELECT * FROM `zdjecia` WHERE id=$id");
  14. $tab = $wynik->fetch_assoc();
  15. $plik = "zdjecia/".$tab['galeria']."/".$tab['id'].".jpg"; //scieszka do pliku
  16. echo "<h2 align=\"center\">Zdjecie o nazwie ".$tab['nazwa']."</h2>";
  17. $zdjecie = new zdjecie;
  18. $min = $zdjecie->TworzMniejszeZdjecie($plik);
  19. imagejpeg($min, null, 100);
  20. //echo "<a href='$lok_zdjecie'><img src='usun.php' alt='tekst alternatywny'/></a>";
  21. echo "</div>";
  22. }
  23. }
  24. $pokaz_zdjecie = new pokaz_zdjecie;
  25. $pokaz_zdjecie->Wyswietl();
  26. ?>

Po uruchomieniu zamiast zdjęcia wyskakują mi jakies znaczki:
Proszę o pomoc


JohnnyB
dodaj na początku:
  1. header("Content-type: image/jpeg");


i będzie git smile.gif
Mylek
Próbowałem już dodawać
  1. header("Content-type: image/jpeg");

ale pod dodaniu tej linijki kodu cała grafika z strony znika,a zdjęcie i tak nadal się nie wyświetla.
JohnnyB
musisz zrobić osoby plik do wyświetlania zdjęć, np. pokaz_obraz.php
potem w głównym pliku strony robisz <img src=pokaz_obraz.php>
a w pliku pokaz_obraz.php na początku dajesz header("Content-type: image/jpeg"); i wyrzucasz samą zawartość zdjęcia, bez żadnego html
Mylek
JohnnyB twój sposób jest dobry tylko jak zrobić żeby mój skrypt po uruchomieniu wykonywał inny skrypt który zmniejsza to zdjęcie i jak przekazać jakieś zmienne do tego skryptu?
Daniel Meger
piszesz coś takiego tam gdzie chcesz wyswietlic miniaturke:
  1. <a href="pokaz_miniaturke.php?zmienna1=aaa&zmienna2=bbb" />


a w pokaz_miniaturke.php dobierasz sie do tych zmiennych za pomoca $_GET['zmienna1'] oraz $_GET['zmienna2'].
JohnnyB
tylko nie <a href ... > a <img src=... >, jeśli ma być obrazek, a o wywołanie nie musisz się martwić, jak przeglądarka napotka znacznik <img> to sama wywoła skrypt podany jako src
Mylek
Dziękuje za pomoc.Wszystko już działa
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.