Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem ze zmiana rozdzielczosci zdjec
Forum PHP.pl > Forum > PHP
Volume
Mam takie 2 skrypty do wyswietalania zdjec z danego katalogu i automatyczne tworzenie miniatur, testowalem to na swoim serwerze i wszystko dziala ok, a na innym niestety nie wyswietla miniatur, nie wiem co moze byc nie tak...
Bardzo prosze o pomoc

Plik zdjecie.php tworzy miniaturki w zaleznosci od zmiennej $zd:
  1. <?php
  2. $zd=substr($_SERVER['REQUEST_URI'],26);
  3. if($foto==$zd)
  4. {
  5. $foto='galeria/glod/'.$zd;
  6. function resiZze($foto)
  7. {
  8. // Set a maximum height and width
  9. $width = 130;
  10. $height = 130;
  11.  
  12. // Content type
  13. header('Content-type: image/jpeg');
  14.  
  15. // Get new dimensions
  16. list($width_orig, $height_orig) = getimagesize($foto);
  17.  
  18. $ratio_orig = $width_orig/$height_orig;
  19.  
  20. if ($width/$height > $ratio_orig) {
  21. $width = $height*$ratio_orig;
  22. } else {
  23. $height = $width/$ratio_orig;
  24. }
  25.  
  26. // Resample
  27. $image_p = imagecreatetruecolor($width, $height);
  28. $image = imagecreatefromjpeg($foto);
  29. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  30.  
  31. // Output
  32. imagejpeg($image_p, null, 100);
  33. }
  34. resiZze($foto);
  35. }
  36. else echo 'brak zdjecia';
  37. ?>

Plik wyswietlajacy zdjecia:
  1. <?php
  2. function FunGal($zrodlo_norm)
  3. {
  4. if($fp = @opendir($zrodlo_norm))
  5. {
  6. while(($plik = readdir($fp)) !== false)
  7. {
  8. if($plik != "." && $plik != "..")
  9. {
  10. list($width, $height, $type, $attr) = getimagesize($zrodlo_norm.$plik);
  11. $height2=$height+40;
  12. echo "\n".'<a href="'.$zrodlo_norm.$plik.'" title="Galeria Zooter ('.$width.'x'.$height2.')"><img src="zdjecie.php?foto='.$plik.'" alt="Fotografia: '.$plik.'" /></a>';
  13. }
  14. }
  15. closedir($fp);
  16. }
  17. }
  18. echo FunGal('galeria/glod/');
  19. ?>
darko
Sprawdź:
1. czy na tym drugim serwerze jest włączone rozszerzenie GD
2. czy wszystkie ścieżki się zgadzają na tym drugim serwerze oraz czy w ogóle istnieją takie katalogi i czy mają odpowiednie uprawnienia do zapisu (777)
3. usuń tłumienie błędów w tej linii
  1. if($fp = @opendir($zrodlo_norm))
Volume
Wydaje sie wszystko ok, rozszerzenie GD jest wlaczone, katalogi ok, wyrzucilem ta @, moze cos z przekazywaniem zmiennych w function resiZze($foto)?
darko
Przenieś deklarację funkcji resiZze poza obszar warunku if, bo nigdy nie będzie spełniony (null != $zd), poza tym nic nie piszesz o błędach jakie się pojawiają, więc pewnie tu jest pies pogrzebany

nie wiem jak to zrobiłeś i pierwszy raz widzę coś takiego:

  1. <?php
  2. $zd=substr($_SERVER['REQUEST_URI'],26);
  3. if($foto==$zd)
  4. {
  5. $foto='galeria/glod/'.$zd;
  6. function resiZze($foto)
  7. {
  8. // (...)


przecież to się nigdy nie wykona, bo
  1. $foto='galeria/glod/'.$zd;
deklarujesz po warunku w którym sprawdzasz
  1. if($foto==$zd)
a na domiar złego jeszcze w tym kontekście deklarujesz warunkowo funkcje... (hmmm)
Volume
Przenioslem tak:
  1. <?php
  2. $zd=substr($_SERVER['REQUEST_URI'],26);
  3.  
  4. function resiZze($foto)
  5. {
  6. $width = 130;
  7. $height = 130;
  8. header('Content-type: image/jpeg');
  9. list($width_orig, $height_orig) = getimagesize($foto);
  10. $ratio_orig = $width_orig/$height_orig;
  11.  
  12. if ($width/$height > $ratio_orig)
  13. {
  14. $width = $height*$ratio_orig;
  15. }
  16. else
  17. {
  18. $height = $width/$ratio_orig;
  19. }
  20.  
  21. $image_p = imagecreatetruecolor($width, $height);
  22. $image = imagecreatefromjpeg($foto);
  23. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  24. imagejpeg($image_p, null, 100);
  25. }
  26.  
  27. if($foto==$zd)
  28. {
  29. $foto='g/'.$zd;
  30. resiZze($foto);
  31. }
  32.  
  33. else echo 'brak zdjecia';
  34. ?>

Ale ciagle nie wyswietla mi miniatur...
Bledow nie widze bo ten serwer w ogole nie pokazuje bledow, a na swoim serwerze jak sprawdzam to wszystko ok:/
darko
Skoro nie wyświetla zdjęć, to problem raczej tkwi tutaj:
  1. <?php
  2. function FunGal($zrodlo_norm)
  3. {
  4. if($fp = @opendir($zrodlo_norm))
  5. {
  6. while(($plik = readdir($fp)) !== false)
  7. {
  8. if($plik != "." && $plik != "..")
  9. {
  10. list($width, $height, $type, $attr) = getimagesize($zrodlo_norm.$plik);
  11. $height2=$height+40;
  12. echo "\n".'<a href="'.$zrodlo_norm.$plik.'" title="Galeria Zooter ('.$width.'x'.$height2.')"><img src="zdjecie.php?foto='.$plik.'" alt="Fotografia: '.$plik.'" /></a>';
  13. }
  14. }
  15. closedir($fp);
  16. }
  17. }
  18. echo FunGal('galeria/glod/');
  19. ?>


to jeszcze raz:

1. usuń tłumienie w opendir
2. dodaj po
  1. if($fp = @opendir($zrodlo_norm)) {
  2. // (...)
  3. }
  4. else {
  5. die "cannot open directory";
  6. }


dodaj jakąś obsługę błędów, "wyechuj" sobie wartości, które podstawiasz jako argumenty do funkcji, sprawdzaj czy warunki są spełnione, jeśli nie są to dodaj else i wypluj sobie sam błąd, nie mam czasu na dokładne analizowanie kodu, to można przecież zrobić samemu
Volume
Ok udalo mi sie, pomoglo $_GET['foto'] zamiast $foto
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.