Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Miniaturki zdjęć
Forum PHP.pl > Forum > Przedszkole
tomkoff
Witam.
Napisałem sobie taki skrypcik, który uploaduje zdjęcie z lokalnego dysku do wskazanego dysku na serwer oraz dodaje nazwę pliku ze zdjęciem do bazy danych. Mam takie pytanie... czy jest możliwe w miare prosto dodać do tego jeszcze taką funkcję, która by "w locie" robiła miniaturkę tego zdjęcia o wskazanym rozmiarze (np. 100x100) i zapisywała ją również do tego samego katalogu co uploadowane zdjęcie, pod nazwą powiedzmy nazwa_zdjęcia_thumb.jpg i jeszcze dodawała tą nazwę także do bazy danych, powiedzmy do pola 'cover_thumb' ? Da się to zrobić, czy póki co to ponad siły początkującego? smile.gif

Z góry dzięki za odpowiedź!
pzdr
Neojawor
oto co sam znalazłem, choć jeszcze nie sprawdzałem (znalazłem to już jakiś czas temu tutaj na forum):
  1. <?php
  2. // definicja funkcji robiącej miniaturę zdjęcia
  3. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality)
  4. {
  5.  /*
  6. * source - obrazek jpeg
  7. * max_x - maksymalna szerokosc pomniejszonego obrazka
  8. * max_y - maksymalna dlugosc pomniejszonego obrazka
  9. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  10. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  11. */
  12.  
  13. if(exif_imagetype($source) == IMAGETYPE_JPEG)
  14. {
  15.  $img_src = imagecreatefromjpeg($source);
  16. }
  17. elseif(exif_imagetype($source) == IMAGETYPE_GIF)
  18. {
  19.  $img_src = imagecreatefromgif($source);
  20. }
  21. elseif(exif_imagetype($source) == IMAGETYPE_PNG)
  22. {
  23.  $img_src = imagecreatefrompng($source);
  24. }
  25. else
  26. {
  27.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  28. }
  29.  
  30.  $image_x = imagesx($img_src);
  31.  $image_y = imagesy($img_src);
  32.  if($image_x > $image_y) // Landscape
  33.  {
  34. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  35. $ratio_y = $ratio_x;
  36. $move = 'y';
  37.  }
  38.  else // Portrait
  39.  {
  40. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  41. $ratio_x = $ratio_y;
  42. $move = 'x';
  43.  }
  44. $new_x = $image_x*$ratio_x;
  45. $new_y = $image_y*$ratio_y;
  46.  
  47. $move_x = ($move == "x") ? ($max_x-$new_x)/: 0;
  48. $move_y = ($move == "y") ? ($max_y-$new_y)/: 0;
  49. $new_img = imagecreatetruecolor($max_x, $max_y); //tworzy obrazek o identyfikatorze $new_img i rozmiarach $max_x i $max_y
  50. $background = imagecolorallocate($new_img, 255, 255, 255); //przypisuje kolor czarny (255, 255, 255) do obrazka $new_img
  51. imagefill($new_img, 0, 0, $background); //wypełnia obrazek $new_image przypisanym kolorem $background
  52. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  53.  
  54. if(exif_imagetype($save_image) == IMAGETYPE_JPEG) //tworzy zmniejszony obrazek $save_image w zależności od typu pliku
  55. {
  56.  imagejpeg($new_img, $save_image, $jpeg_quality);
  57. }
  58. elseif(exif_imagetype($save_image) == IMAGETYPE_GIF)
  59. {
  60.  imagegif($new_img, $save_image);
  61. }
  62. elseif(exif_imagetype($save_image) == IMAGETYPE_PNG)
  63. {
  64.  imagepng($new_img, $save_image);
  65. }
  66.  
  67.  echo '<img src="'.$save_image.'" border="1">'; //wyświetla zmniejszony obrazek $save_image
  68. }
  69. // koniec definicji funkcji robiącej miniaturę
  70. ?>


ps. przepraszam że to wyświetlam jako html, ale jak biorę php, to mi wstawia \ przed niektóre cudzysłowy i wszystko jest totalnie nieczytelne (tu uwaga do adminów - czemu to tak dziwnie działa?)
kosheen2k
Cytat(Neojawor @ 14.11.2006, 17:52:53 ) *
ps. przepraszam że to wyświetlam jako html, ale jak biorę php, to mi wstawia \ przed niektóre cudzysłowy i wszystko jest totalnie nieczytelne (tu uwaga do adminów - czemu to tak dziwnie działa?)


Kolego drogi wszystko jest czytelne winksmiley.jpg w podglądzie widać tylko \" a jak już wrzucisz posta jest wszystko ok. Sam sprawdź smile.gif Pozdrawiam
Neojawor
Dzięki kosheen2k, sporo czasu mnie tu nie było... snitch.gif
Zimon
jeśli można wiedzieć to jak przebudować ten skrypt aby miniaturkę tworzył bezpośrednio po uploadzie na serwer i zapisywał go w tym samym folderze co większy plik??

czy może wystarczy tylko zastosować takie coś
  1. <?php
  2. copy($save_image, 'ścieżka/'.$save_image);
  3. ?>


a zmienna $source to $_post[file][name]questionmark.gif
grattz
Czy ktoś kto ma za dużo czasu mógłby dostosować ten skrypt do moich potrzeb ?

Dane wyjściowe:
Katalog w którym mam zdjęcia : ../portal2006/uploads/
Zmienna pobierająca z MySQL nazwę pliku zapisanego w tym katalogu : .$row['id'].$row['nazwabanera'].
Miniaturka w rozmiarze 150x150

Dzięki . Analizuje ten kod i nie wiem co mam zmienić.

Ktoś moze mnie naprowadzić jak to zrobić bo nie moge sobie z tym poradzić.
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.