Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z tworzeniem miniatur obrazu
Forum PHP.pl > Forum > Przedszkole
swavec
Czesć. Próbuję stworzyć stronę typu galeria. Jestem teraz na etapie tworzenia miniatury z obrazka jpg przesłanego wczesniej do odpowiedniego katalogu na serwerze. Niestety utknąłem w martwym punkcie - problem ze stworzeniem miniatury.... Poniżej zamieszczam kod którego używam do stworzenia miniatury. Myslę że kod jest poprawny ale błąd leży gdzie indziej i dokładnie nie wiem gdzie...
Zamiast obrazka jpg wyswietlają się takie znaki: „˙Ř˙ŕ”
Takie same znaki pojawiają się kiedy próbuję wyswietlic obrazek jeszcze przed pomniejszeniem go a także w przypadku gdy powinien zostać wygenerowany obrazek zastąpczy „błąd odczytu” wyswietla się: ˙Ř˙ŕ.
Nie wiem dlaczego tak się dzieje ale wygląda to tak jakbym nie mógł wykonać żadnych operacji na pliku graficznym... nawet nie mogę go wyswietlić przy pomocy funkcji imagejpeg(). Mogę go tylko wgrać na serwer... Co jest powodem tego? Czy ktos może mi pomóc?


  1. <?php
  2.  
  3.  
  4. $nazwa_pliku = "./galeria/ludzie/14102008214110.jpg";
  5. $szerokosc = 88;
  6.  
  7. // Content type
  8. header('Content-type: image/jpeg');
  9.  
  10.  $duzy = ImageCreateFromJPEG ("$nazwa_pliku");
  11.  
  12. //generowanie obrazka zastepczego
  13.  if (!$duzy) {
  14.     $duzy  = ImageCreate (150, 30);
  15.     $bgc = ImageColorAllocate ($duzy, 255, 255, 255);
  16.     $tc  = ImageColorAllocate ($duzy, 0, 0, 0);
  17.     ImageFilledRectangle ($duzy, 0, 0, 150, 30, $bgc);
  18.     ImageString ($duzy, 1, 5, 5, "Błąd odczytu", $tc);
  19.  
  20.  }
  21.  
  22.  $duzyX=ImageSX($duzy);
  23.  $duzyY=ImageSY($duzy);
  24.  
  25.  //tworzymy miniaturkę
  26.  $maly=ImageCreate($szerokosc,($szerokosc/$duzyX)*$duzyY);
  27.  $malyX=ImageSX($maly);
  28.  $malyY=ImageSY($maly);
  29.  
  30.  ImageCopyResized(
  31.    $maly,$duzy,    //przeznaczenie, źródło
  32.    0,0,            //gdzie ma trafić w przeznaczeniu
  33.    0,0,            //skąd ma pochodzić ze źródła
  34.    $malyX,$malyY,  //rozmiary, jakie ma zająć w przeznaczeniu
  35.    $duzyX,$duzyY   //rozmiary, jakie bierzemy ze źródła
  36.  );
  37.  
  38.  
  39.  
  40. ImageDestroy($duzy);
  41. imagejpeg($maly);
  42.  
  43. ?>
krzyszbi
kod jest dobry
złe jest użycie " a właściwie niepotrzebne
zamień na
  1. <?php
  2. $nazwa_pliku = './galeria/ludzie/14102008214110.jpg';
  3. $szerokosc = 88;
  4.  
  5. // Content type
  6. header('Content-type: image/jpeg');
  7.  
  8. $duzy = ImageCreateFromJPEG ($nazwa_pliku);
  9. ?>

dzieje się tak pewnie dlatego że php w podwójnych cudzysłowach szuka zmiennych jak i znaków ASCII
swavec
Dzięki za odpowiedź niestety ta poprawka nie działa. Wciąż to samo. Problem nie leży w złym kodzie, ale myslę, że może to być cos z ustawieniami serwera.... (nie mam pojęcia o co chodzi) Próbowałem już większosć kodów z forum i ze wszystkimi to samo - wyswietla się: ˙Ř˙ŕ. Zamiast obrazka. Weźmy na przykład taki kod:
  1. <?php
  2. header ('Content-type: image/png');
  3. $im = @imagecreatetruecolor(120, 20)
  4.      or die('Cannot Initialize new GD image stream');
  5. $text_color = imagecolorallocate($im, 233, 14, 91);
  6. imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
  7. imagepng($im);
  8. imagedestroy($im);
  9. ?>

Wgrywam ten kod wgrywam do pliku php. (kod jest poprawny- podaje go tylko, żeby zobrazować w czym problem; kod ze strony: http://pl2.php.net/manual/pl/function.imag...etruecolor.php) Powinien on wygenerowac i wyswietlić na ekranie obrazek png o wymiarach 120x20 czarnym tle z czerwonym napisem „A Simple Text String” tymczasem na ekranie dostaję takie znaki: ‰PNG W przypadku obrazka jpg pojawia się: ˙Ř˙ŕ
Serwer mam na interii powinien obsługiwać prawie cały php; biblioteki GD2.0
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.