Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Robienie miniaturek ze zdjec
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Pewnie moj problem jest stary jak swiat ale jakos nie moge sie doszukac w googlach odpowiedzi na moj problem. Znalazlem w necie taki prosty skrypcik do tworzenia miniatur w locie, ktory chcialem wykorzystac w galerii zdjec. Ale caly czas mi sie pojawia error bledu skladni typu

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting '&' or T_VARIABLE in c:\usr\krasnal\....\nowy.php on line 2

i nie wiem jak to obejsc:/

Tu na przykladzie ma wziasc zdjecie z tego samego katalogu i zrobic z niego wersje 100x100px. Probowalem juz chyba wszystkich mozliwych kombinacji ale za kazdym razem mam inne bledy:/ Oto kod:

  1. <?php
  2. function zmiana_rozmiaru('2.jpg',100,100){
  3. //$orginalny_obrazek = "2.jpg";
  4. //$docelowa_szerokosc = 100;
  5. //$docelowa_wysokosc =100;
  6. list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
  7. $xskala=$szerokosc/$docelowa_szerokosc;
  8. $yskala=$wysokosc/$docelowa_wysokosc;
  9.  if ($yskala>$xskala)
  10. {
  11. $nowa_szerokosc = round($szerokosc * (1/$yskala));
  12. $nowa_wysokosc = round($wysokosc * (1/$yskala));
  13. }
  14. else 
  15. {
  16. $nowa_szerokosc = round($szerokosc * (1/$xskala));
  17. $nowa_wysokosc = round($wysokosc * (1/$xskala));
  18. }
  19. // Zmiana rozmiaru orginalnego obrazu
  20. $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  21. $obrazek_tymczasowy  = imagecreatefromjpeg ($orginalny_obrazek);
  22. imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  23. return $obraz_zmiana_wielkosci;
  24. }
  25. zmiana_rozmiaru();
  26. ?>

Jesli ktos z Was widzi jakis blad to dajcie znac, pozdrawiam, Łukasz.
uli
Nie możesz dać w definicji funkcji tak zdefiniowanych stałych ohmy.gif

Daj tak:
  1. <?php
  2. function zmiana_rozmiaru($plik,$wys,$szer)
  3. ?>


i wywołuj :

  1. <?php
  2. zmiana_rozmiaru('2.jpg',100,100);
  3. ?>


Swoją drogą - ja rozumiem, że to przedszkole ale początkujący programiści cosik obniżają loty....
lukash82
Ok, sorki ale dopiero sie ucze i pierwszy raz mialem do czyninia z takim czyms..., teraz juz bede wiedzial. Jeszcze jedno pytanie... jak teraz wyswietlic ta miniaturke bo po wywolaniu funkcji jak wpisze
  1. <?php
  2. echo "<img src=2.jpg>";
  3. ?>

to wyswietla duze zdjecie przed obrobka, a jak wpisze
  1. <?php
  2. echo "<img src=$obraz_zmiana_wielkosci>";
  3. echo "<img src=$obraz_zmiana_wielkosci".".jpg>";
  4. ?>

to pojawia sie w przegladarce taka ikona pliku nie zaladowanego ale we wlasciwosciach pisze, ze to jest plik nowy.php czyli ten w ktorym jest napisany ten skrypt...:/
tommy4
Skrypt w którym tworzysz obrazek musi być w oddzielnym pliku, dajmy na to nowyplik.php. I ten plik musi mieć na początku ustawiony header w zależności jaki format pliku ma być, w twoim przypadku widze jpg, więc:

  1. <?php
  2. header('Content-type: image/jpeg');
  3. ?>


I zaraz po tym twoj skrypt tworzenia obrazka.
Adres źródłowego obrazka pobierasz np. z $_GET.

potem pozostaje ci tylko wyswietlenie na stronie www:

Kod
<img src="nowyplik.php?img=obrazek.jpg">


Tu masz obszerniejszy przykład: http://tommy4.gtacartel.pl/strona/teksty/6/
lopik
@lukash82, możesz także użyć argumentów domyślnych:
  1. <?php
  2. function zmiana_rozmiaru($plik='2.jpg',$wys = 100,$szer=100) {
  3. ...
  4. }
  5. // wywolanie
  6. zmiana_rozmiaru();
  7. ?>
lukash82
Witam ponowie. Dzieki za podpowiedz. Wszystko pieknie mi wytlumaczyliscie i niby wszystko powinno dzialac a jednak nie dziala...:/ Chyba sie nie nadaje na zadnego guru od php...:/ Zrobilem tak jak pisaliscie czyli skrypt z tworzeniem miniatur wyglada tak (plik nowy.php):
  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. // cala tresc funkcji tworzacej miniaturke zdjecia
  5.  
  6. zmiana_rozmiaru($_GET['img'],100,100);
  7. ?>

a w pliku nowy2.php wywoluje sobieto zdjecie po obrobce:
  1. <?php
  2. echo "<img src='nowy.php?img=2.jpg'>";
  3. ?>

Moim zdaniem chyba dobrze to jest zrobione bo w przegladarce pojawia mi sie taki znaczek pliku nie zaladowanego w calosci i w jego wlasciwosciach jest adres taki:
http://localhost/~galeria/nowy.php?img=2.jpg
Pewnie znow cos przeoczylem ale juz sam nie wiem co....
Nickel
  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. // cala tresc funkcji tworzacej miniaturke zdjecia
  5.  
  6. function zmiana_rozmiaru($img){
  7. $orginalny_obrazek = $img;
  8. $docelowa_szerokosc = 100;
  9. $docelowa_wysokosc =100;
  10. list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
  11. $xskala=$szerokosc/$docelowa_szerokosc;
  12. $yskala=$wysokosc/$docelowa_wysokosc;
  13.  if ($yskala>$xskala)
  14. {
  15. $nowa_szerokosc = round($szerokosc * (1/$yskala));
  16. $nowa_wysokosc = round($wysokosc * (1/$yskala));
  17. }
  18. else 
  19. {
  20. $nowa_szerokosc = round($szerokosc * (1/$xskala));
  21. $nowa_wysokosc = round($wysokosc * (1/$xskala));
  22. }
  23. // Zmiana rozmiaru orginalnego obrazu
  24. $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  25. $obrazek_tymczasowy  = imagecreatefromjpeg ($orginalny_obrazek);
  26. imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  27.  
  28. imagejpeg($obraz_zmiana_wielkosci); // !!
  29. }
  30.  
  31. zmiana_rozmiaru($_GET['img']);
  32. ?>


Zapomniałeś o zwróceniu przeglądarce tego nowego obrazka (f. imagejpeg()). I odpalaj to najpierw tak:
http://localhost/~galeria/nowy.php?img=2.jpg a dopiero potem wstawiaj to do <img>. Jeśli wrzucasz to odrazu do <img> to nie widzisz ewentualnych błędów zwracanych przez php.

pzdr
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.