Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaawansowane wysyłanie fotek
Forum PHP.pl > Forum > PHP
wozniak
Witam, jak zrobic takie cos:

Chce zeby przez formularz mozna było wysłac na serwer i dodac do bazy 3 fotki i zrobic im miniaturki.
Znaczy chodzi o to zeby miniaturki robiły sie automatycznie przez np,. GD liberty.
Mam taki skrypt:
  1. <form action="foto.php" method="post" enctype="multipart/form-data">
  2. Plik 1: <input type="file" name="file1"><br><br>
  3. Plik 2: <input type="file" name="file2"><br><br>
  4. Plik 3: <input type="file" name="file3"><br><br>
  5. Plik 4: <input type="file" name="file4"><br><br>
  6. <input type="submit" name="Submit" value="Wyślij">
  7. </form>
  1. <?
  2. copy(&#092;"$file1\", \"in/$file1_name\"); 
  3. copy(&#092;"$file2\", \"in/$file2_name\"); 
  4. copy(&#092;"$file3\", \"in/$file3_name\"); 
  5. $query = sql(&#092;"INSERT INTO foto SET foto1='$file1_name', foto2='$file2_name', foto3='$file3_name';\");
  6. ?>
I teraz jak dodac GD LIberty zaczy zeby robiły sie miniaturki i wysyłaly sie na serwer?
wozniak
Tak moze byc:?
  1. <?
  2. include(&#092;"polaczenie.php\");  
  3. $d1 = date(&#092;"d-m-\"); 
  4. $d2 = date(&#092;"Y\");
  5. copy(&#092;"$file1\", \"in/$file1_name\");
  6. copy(&#092;"$file2\", \"in/$file2_name\");
  7. copy(&#092;"$file3\", \"in/$file3_name\");
  8. copy(&#092;"$file4\", \"in/$file4_name\");
  9.  
  10.  
  11. resizeImage('$file1_name', MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/$file1_name', JAKOSC_JPEG); 
  12. resizeImage('$file2_name', MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/$file2_name', JAKOSC_JPEG); 
  13. resizeImage('$file3_name', MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/$file3_name', JAKOSC_JPEG); 
  14. resizeImage('$file4_name', MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/$file4_name', JAKOSC_JPEG); )
  15.  
  16. $mini1 = &#092;"miniatury/$file1_name\";
  17. $mini2 = &#092;"miniatury/$file2_name\";
  18. $mini3 = &#092;"miniatury/$file3_name\";
  19. $mini4 = &#092;"miniatury/$file4_name\";
  20.  
  21. $data = $d1.&#092;" 20\".$d2;
  22. $godz=date(&#092;"H:i\");
  23. $query = sql(&#092;"INSERT INTO foto SET foto1='$file1_name', foto2='$file2_name', foto3='$file3_name', foto4='$file4_name',
  24.  mini1='mini1', mini2='mini2', mini3='mini3', mini4='mini4';&#092;");
  25.  
  26.  
  27.  
  28. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  29. {
  30.  /*
  31. * source - obrazek jpeg
  32. * max_x - maksymalna szerokosc pomniejszonego obrazka
  33. * max_y - maksymalna dlugosc pomniejszonego obrazka
  34. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  35. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  36. */
  37.  
  38. if(exif_imagetype($source) == IMAGETYPE_JPEG)
  39. {
  40.  $img_src = imagecreatefromjpeg($source);
  41. }
  42. elseif(exif_imagetype($source) == IMAGETYPE_GIF)
  43. {
  44.  $img_src = imagecreatefromgif($source);
  45. }
  46. elseif(exif_imagetype($source) == IMAGETYPE_PNG)
  47. {
  48.  $img_src = imagecreatefrompng($source);
  49. }
  50. else
  51. {
  52.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  53. }
  54.  
  55.  $image_x = imagesx($img_src);
  56.  $image_y = imagesy($img_src);
  57.  if($image_x > $image_y) // Landscape
  58.  {
  59. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  60. $ratio_y = $ratio_x;
  61. $move = 'y';
  62.  }
  63.  else // Portrait
  64.  {
  65. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  66. $ratio_x = $ratio_y;
  67. $move = 'x';
  68.  }
  69. $new_x = $image_x*$ratio_x;
  70. $new_y = $image_y*$ratio_y;
  71.  
  72. $move_x = ($move == &#092;"x\") ? ($max_x-$new_x)/2 : 0;
  73. $move_y = ($move == &#092;"y\") ? ($max_y-$new_y)/2 : 0;
  74.  
  75. $new_img = imagecreatetruecolor($max_x, $max_y);
  76. $background = imagecolorallocate($new_img, 255, 255, 255);
  77. imagefill($new_img, 0, 0, $background);
  78. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  79.  
  80. if(exif_imagetype($save_image) == IMAGETYPE_JPEG)
  81. {
  82.  imagejpeg($new_img, $save_image, 100);
  83. }
  84. elseif(exif_imagetype($save_image) == IMAGETYPE_GIF)
  85. {
  86.  imagegif($new_img, $save_image);
  87. }
  88. elseif(exif_imagetype($save_image) == IMAGETYPE_PNG)
  89. {
  90.  imagepng($new_img, $save_image);
  91. }
  92.  
  93.  echo '<img src=\"'.$save_image.'\" border=\"1\">';
  94. }
  95.  
  96. ?>
tiraeth
@wozniak: widzę, że korzystasz z mojej funkcji smile.gif pamiętaj, że jeżeli nie działa ci exif_imagetype to musisz zajżeć do tematu gdzie podałem tą funkcję i pobrać drugą wersję, która nie wykorzystuje exif_imagetype smile.gif

Ten kod nie będzie działać... najpierw musisz utworzyć funkcję, czyli function ... a dopiero potem ją wykonać czyli imageResize(..).....

  1. <?
  2. include('polaczenie.php'); # wczytujemy skrypt polaczenia z baza danych
  3.  
  4. # FUNKCJA DO MINIATUREK - begin
  5. function imgType($name)
  6. {
  7.  $help = getimagesize($name);
  8.  $type = $help[2];
  9.  
  10.  if($type == 2)
  11.  {
  12. return &#092;"IMAGETYPE_JPEG\";
  13.  }
  14.  elseif($type == 1)
  15.  {
  16. return &#092;"IMAGETYPE_GIF\";
  17.  }
  18.  elseif($type == 3)
  19.  {
  20. return &#092;"IMAGETYPE_PNG\";
  21.  }
  22. }
  23.  
  24. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  25. {
  26.  /*
  27. * source - obrazek jpeg
  28. * max_x - maksymalna szerokosc pomniejszonego obrazka
  29. * max_y - maksymalna dlugosc pomniejszonego obrazka
  30. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  31. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  32. */
  33.  
  34. if(imgType($source) == &#092;"IMAGETYPE_JPEG\")
  35. {
  36.  $img_src = imagecreatefromjpeg($source);
  37. }
  38. elseif(imgType($source) == &#092;"IMAGETYPE_GIF\")
  39. {
  40.  $img_src = imagecreatefromgif($source);
  41. }
  42. elseif(imgType($source) == &#092;"IMAGETYPE_PNG\")
  43. {
  44.  $img_src = imagecreatefrompng($source);
  45. }
  46. else
  47. {
  48.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  49. }
  50.  
  51.  $image_x = imagesx($img_src);
  52.  $image_y = imagesy($img_src);
  53.  if($image_x > $image_y) // Landscape
  54.  {
  55. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  56. $ratio_y = $ratio_x;
  57. $move = 'y';
  58.  }
  59.  else // Portrait
  60.  {
  61. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  62. $ratio_x = $ratio_y;
  63. $move = 'x';
  64.  }
  65. $new_x = $image_x*$ratio_x;
  66. $new_y = $image_y*$ratio_y;
  67.  
  68. $move_x = ($move == &#092;"x\") ? ($max_x-$new_x)/2 : 0;
  69. $move_y = ($move == &#092;"y\") ? ($max_y-$new_y)/2 : 0;
  70.  
  71. $new_img = imagecreatetruecolor($max_x, $max_y);
  72. $background = imagecolorallocate($new_img, 255, 255, 255);
  73. imagefill($new_img, 0, 0, $background);
  74. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  75.  
  76. if(imgType($save_image) == &#092;"IMAGETYPE_JPEG\")
  77. {
  78.  imagejpeg($new_img, $save_image, 100);
  79. }
  80. elseif(imgType($save_image) == &#092;"IMAGETYPE_GIF\")
  81. {
  82.  imagegif($new_img, $save_image);
  83. }
  84. elseif(imgType($save_image) == &#092;"IMAGETYPE_PNG\")
  85. {
  86.  imagepng($new_img, $save_image);
  87. }
  88.  
  89.  echo '<img src=\"'.$save_image.'\" border=\"1\">';
  90. }
  91. # FUNKCJA DO MINIATUREK - end
  92.  
  93. $d1 = date(&#092;"d-m-\");
  94. $d2 = date(&#092;"Y\");
  95.  
  96. define('MAX_MYMIAR_X', 100);  # maksymalna szerokosc miniaturki w pikselach
  97. define('MAX_MYMIAR_Y', 100);  # maksymalna wysokosc miniaturki w pikselach
  98. define('JAKOSC_JPEG', 100); # jakosc jpeg w procentach (najlepiej od 75 do 100; domyslnie 100)
  99.  
  100. # kopiujemy pliki - begin
  101. copy($file1, 'in/'.$file1_name);
  102. copy($file2, 'in/'.$file2_name);
  103. copy($file3, 'in/'.$file3_name);
  104. copy($file4, 'in/'.$file4_name);
  105. # kopiujemy pliki - end
  106.  
  107. # tworzymy miniaturki - begin
  108. resizeImage($file1_name, MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/'.$file1_name, JAKOSC_JPEG);
  109. resizeImage($file2_name, MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/'.$file2_name, JAKOSC_JPEG);
  110. resizeImage($file3_name, MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/'.$file3_name, JAKOSC_JPEG);
  111. resizeImage($file4_name, MAX_WYMIAR_X, MAX_WYMIAR_Y, 'miniatury/'.$file4_name, JAKOSC_JPEG);
  112. # tworzymy miniaturki - end
  113.  
  114. $mini1 = 'miniatury/'.$file1_name;
  115. $mini2 = 'miniatury/'.$file2_name;
  116. $mini3 = 'miniatury/'.$file3_name;
  117. $mini4 = 'miniatury/'.$file4_name;
  118.  
  119. $data = $d1.&#092;" 20\".$d2;
  120. $godz = date(&#092;"H:i\");
  121.  
  122. # dodajemy do bazy - begin
  123. $query = sql(&#092;"
  124. INSERT INTO foto 
  125. SET foto1='\".$file1_name.\"', 
  126. foto2='\".$file2_name.\"', 
  127. foto3='\".$file3_name.\"', 
  128. foto4='\".$file4_name.\"',
  129. mini1='\".$mini1.\"',
  130. mini2='\".$mini2.\"', 
  131. mini3='\".$mini3.\"', 
  132. mini4='\".$mini4.\"';
  133. &#092;")
  134. or die('Wyslanie do bazy niepowiodlo sie!');  # gdy nie powiedzie sie wyslanie do bazy
  135. echo 'Udalo sie! Fotografie zostaly dodane!!'; # gdy powiedzie sie wyslanie do bazy
  136. # dodajemy do bazy - end
  137.  
  138.  
  139.  
  140.  
  141. ?>

to powinno działać smile.gif
wozniak
Pokazuje się bład:

Warning: getimagesize(DSCF0161.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\Program Files\WebServ\httpd-users\Upload plikow\upload_multiple.php on line 7

Warning: getimagesize(DSCF0161.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\Program Files\WebServ\httpd-users\Upload plikow\upload_multiple.php on line 7

Warning: getimagesize(DSCF0161.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\Program Files\WebServ\httpd-users\Upload plikow\upload_multiple.php on line 7
Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG
bendi
Czlowieku to co ty nazywasz zaawansowanym wysylaniem fotek jest naprawde standardowym i powielanym mase razy wyslaniem fotek na serwer i zmniejszaniem ich w locie, mozesz skorzystac z funkcji szukaj na tym forum lub na jakims innym ( na webhelp zostawilem troche kodu - wyszukaj imageCreateTrueColor) i daj zyc exclamation.gif!
wozniak
A nie mozesz mi pomoc?
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.