Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeskalowanie zdjęcia
Forum PHP.pl > Forum > Przedszkole
mihas
Cześć.

Złożyłem funkcję, która ma zmienić rozmiar zdjęcia $src_file na określoną szerokość $dst_width albo wysokość $dst_height i zapisać jako plik $dst_file.

  1. <?php
  2. function resizeJPEG( $src_file, $dst_file, $dst_width=false, $dst_height=false )
  3. { 
  4. /**/echo "\nFAFARAFA";
  5. # one or both of dst_width or dst_height must be int
  6. if( !$dst_width && !$dst_height )
  7. { die( 'Must specify either a dst_width or dst_height!' ); }
  8.  
  9. list( $src_width, $src_height, $type, $attr ) = getimagesize( $src_file );
  10. switch ( $type )
  11. {
  12. case 1: 
  13. $src_img = @ImageCreateFromGIF($src_file); break; 
  14. case 2: 
  15. $src_img = @ImageCreateFromJPEG($src_file); break; 
  16. case 3: 
  17. $src_img = @ImageCreateFromPNG($src_file); break;
  18. default:
  19. return false;
  20. }
  21.  
  22. if( !$src_img ) return false;
  23.  
  24. $src_width = imagesx($src_img);
  25. $src_height = imagesy($src_img);
  26.  
  27. echo ":: ".$src_height."/".$src_width."/".$dst_height."/".$dst_width."\n";
  28.  
  29. if( $src_width <= $dst_width && $src_height <= $dst_height )
  30. {  # src img is smaller than wanted dimensions
  31. $success = imageJPEG( $src_img, $dst_file );
  32. }
  33. else
  34. {  # resize image
  35. if( $dst_width !== false && $dst_height === false )
  36. {  # only specified dst_width, calculate dst_height
  37. $proportion = round( ( $src_width / $dst_width ), 2 );
  38. $dst_height = (int) ( $src_height / $proportion );
  39. }
  40. elseif( $dst_width === false && $dst_height !== false )
  41. {  # only dst_height specified, calculate dst_width
  42. $proportion = round( ( $src_height / $dst_height ), 2 );
  43. $dst_width = (int) ( $src_width / $proportion );
  44. }
  45. echo "ratio: ".$proportion."\n";
  46. $new_img = imagecreatetruecolor( $dst_width, $dst_height );
  47. imagecopyresampled( $new_img, $src_img, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height );
  48. $success = imageJPEG( $new_img, $dst_file );
  49. }
  50. # clean up
  51. imagedestroy( $new_img );
  52. imagedestroy( $src_img );
  53. return $success;
  54. }
  55. ?>

Mówiąc najkrócej: nie działa. W php nie jestem zbyt biegły, ale zastosowałem starą dobrą metodę wstawiania "znaczników" wewnątrz kodu, aby sprawdzić co szwankuje. W oknie przeglądarki pojawia się wyłącznie pierwszy ("FAFARAFA") znacznik. Reszty nie ma. Dziwi mnie to, bo wydaje mi się, że albo powinny zostać wypisane, albo funkcja powinna się wywalić.

Co z tym zrobic? Macie jakis pomysł? smile.gif
crash
Dlaczego umieściłeś ten tematu w tym dziale?
NetJaro
Uzyj funkcji header, aby przekazac naglowki do przegladarki, ze zostanie wyswietlony obraz.
FiDO
Przenosze na php P.
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.