Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skalowanie fotek
Forum PHP.pl > Forum > PHP
john_doe
Witam,

mam formularz

  1. <form action="obsluz.php" method="POST" ENCTYPE="multipart/form-data">
  2. <input type="file" name="v_plik" />
  3. <input type="submit" value="Dopal" />


i plik obslugujacy go

  1. <?php
  2. //Maksymalny format zdjęcia
  3. define('MAX_X', 344);
  4. define('MAX_Y', 258);
  5.  
  6. $max_rozmiar = 1024*1024; //1MB
  7. $plik_tmp = $_FILES['v_plik']['tmp_name']; // the temporary name assigned to the file when its uploaded.
  8. $plik_nazwa = $_FILES['v_plik']['name'];  // the original name of the file from the user's computer
  9. $plik_rozmiar = $_FILES['v_plik']['size']; // the size of the file, in bytes
  10. $plik_typ = $_FILES['plik']['type'];  // the mime type of the file, as provided by the user's browser
  11.  
  12. if ( is_uploaded_file($plik_tmp) ) 
  13. {
  14. if ($plik_rozmiar > $max_rozmiar) 
  15. {
  16. echo 'Błąd! Plik jest za duży!';
  17. } else 
  18. {
  19. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/bufor/pliki/'.$plik_nazwa))
  20. {
  21. echo "<center><b>Taki plik jest już na serwerze</b></center>";
  22. } else
  23. {
  24. echo '<br /><table class="tableSheild" align="center"><tr><td colspan="2">';
  25. echo 'Odebrano plik.</td></tr><tr><td><br /> Nazwa pliku: <b></td><td>'.$plik_nazwa.'</b></td></tr>';
  26. //echo '<br/>';
  27. if (isset($plik_typ)) 
  28. {
  29.  echo '<tr><td>Typ: </td><td>'.$plik_typ.'<td></tr>';  
  30. }
  31.  
  32. echo '</tr><td>Rozmiar odebranego pliku: </td><td>'. $plik_rozmiar ;
  33. echo ' KB</td></tr></table>';
  34.  
  35. }
  36. //w tym miejscu warunki do ktorego katalogu ma leciec plik :)
  37. move_uploaded_file($plik_tmp, $_SERVER['DOCUMENT_ROOT'].'/bufor/pliki/'.$plik_nazwa);
  38.  
  39. // TUTAJ SPRAWDZ MINIATURYZACJE FOTEK
  40. //Skalowanie obrazka do dopuszczalnych rozmiarów
  41.  
  42. $staryObrazek = imagecreatefromjpeg($plik_nazwa);
  43. list( $width, $height ) = getimagesize( $plik_nazwa );
  44. echo $width .'x'. $height;
  45. $wymiar = $height / $width;
  46. $widthN = $width;
  47. $heightN = $height;
  48. if ($width>$height) {
  49. if ($width>MAX_X) {
  50. $widthN = MAX_X;
  51. $heightN = $widthN*$wymiar;
  52. }
  53. } else {
  54. if ($height>MAX_Y) {
  55. $heightN = MAX_Y;
  56. $widthN = $heightN/$wymiar;
  57. }
  58. }
  59. $nowyObrazek = imagecreatetruecolor($widthN, $heightN) or die("Cannot Initialize new GD image stream");
  60. imagecopyresized($nowyObrazek, $staryObrazek, 0, 0, 0, 0, $widthN, $heightN, $width, $height) or die("dupa");
  61. //imagecopyresampled($nowyObrazek, $staryObrazek, 0, 0, 0, 0, $widthN, $heightN, $width, $height) or die("dupa");
  62.  
  63. }
  64. } 
  65. else 
  66. {
  67. echo 'Błąd przy przesyłaniu danych!';
  68. }
  69. ?>


Generalnie chce dokonac uploadu pliku a potem zeskalowac fotke do okreslonego rozmiaru, niestety cos mi tutaj nie gra i nie dziala (upload dziala to proste, ale zdjec nie skaluje), zadnych błędów nie dostaje na ekran...


prosze o sugestie

pozdrawiam
em1X
masz tu samą funkcję reskalującą, która działa na pewno (sprawdziłem)

  1. <?php
  2. /**********************************************************
  3.  * function resizejpeg:
  4.  *
  5.  * = creates a resized image based on the max width
  6.  * specified.
  7.  *
  8.  * @dir = directory image is stored in
  9.  * @newdir = directory new image will be stored in
  10.  * @img = the image name
  11.  * @max_w = the max width of the resized image
  12.  * @max_h = the max height of the resized image
  13.  *
  14.  **********************************************************/
  15. function resizejpeg($dir, $newdir, $img, $max_w, $max_h)
  16. {
  17.  // set destination directory
  18.  if (!$newdir) $newdir = $dir;
  19.  
  20.  // get original images width and height
  21.  list($or_w, $or_h, $or_t) = getimagesize($dir.$img);
  22.  
  23.  // make sure image is a jpeg
  24.  if ($or_t == 2) {
  25.  
  26.  // obtain the image's ratio
  27.  $ratio = ($or_h / $or_w);
  28.  
  29.  // original image
  30.  $or_image = imagecreatefromjpeg($dir.$img);
  31.  
  32.  // resize image?
  33.  if ($or_w > $max_w || $or_h > $max_h) {
  34.  
  35.  // resize by height, then width (height dominant)
  36.  if ($max_h < $max_w) {
  37.  $rs_h = $max_h;
  38.  $rs_w = $rs_h / $ratio;
  39.  }
  40.  // resize by width, then height (width dominant)
  41.  else {
  42.  $rs_w = $max_w;
  43.  $rs_h = $ratio * $rs_w;
  44.  }
  45.  
  46.  // copy old image to new image
  47.  $rs_image = imagecreatetruecolor($rs_w, $rs_h);
  48.  imagecopyresampled($rs_image, $or_image, 0, 0, 0, 0, $rs_w, $rs_h, $or_w, $or_h);
  49.  }
  50.  // image requires no resizing
  51.  else {
  52.  $rs_w = $or_w;
  53.  $rs_h = $or_h;
  54.  
  55.  $rs_image = $or_image;
  56.  }
  57.  
  58.  // generate resized image
  59.  imagejpeg($rs_image, $newdir.$img, 100);
  60.  
  61.  return true;
  62.  }
  63.  
  64.  // Image type was not jpeg!
  65.  else {
  66.  return false;
  67.  }
  68. }
  69.  
  70. $dir = './';
  71. $img = 'test.jpg';
  72.  
  73. resizejpeg($dir, '', $img, 400, 200);
  74. ?>
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.