Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zmniejszanie zdjecia
Forum PHP.pl > Forum > Przedszkole
michalszweisig
witam,
zalaczam formularzem obrazek i jak najprosciej zrobic, zeby go zmniejszyc do wymiarow 100x100?

a jak sie uda to rozumiem, ze zapisuje go na serwerze, a w bazie odnosnik do niego? tylko jak zrobic zapisywanie w jakims folderze?
Rid
Odnośnik ,do bazy zapisujesz tylko po to aby Ci było,łatwiej manipulować zdjęciem,obrazem w przyszłości,prawdziwe zapisanie zdjęcia do bazy polega na konwersji zdjęcia do tablicy bitów i zapisanie jej do komórki binary w mysql,o ile zapis binarny do sql jest w miarę łatwy to odczyt wcale taki nie jest,lepiej zrobić zapis zdjęcia do folderu.

A pro po zmniejszaniu zdjęć-proszę poczytać o skalowaniu zdjęć jest tego dużo na GOOGLE.
ToAr
w formularzu umieszczasz input typu 'file'

następnie w skrypcie, gdzie operujesz na danych po wysłaniu formularza zamieszczasz

  1. $foto = $_FILES['foto']['name'];
  2.  
  3. if(!empty($foto)) {
  4. $roz = strtolower(strrchr($foto, "."));
  5. if($roz == '.jpg' || $roz == '.jpeg') { // sprawdzamy rozszerzenie pliku
  6. $randName = md5(rand() * time()); // generujemy losowa nazwe pliku
  7. $uploaddir = 'img/carpets/'; // sciezka do folderu, w ktorym ma zostac zapisany obraz
  8. $new_foto = $randName . $roz; // nowa nazwa pliku z odpowiednim rozszerzeniem
  9. $uploadfile = $uploaddir . $new_foto;
  10. if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile))
  11. {
  12. echo 'plik zostal wyslany';
  13. }
  14. } else {
  15. echo 'plik ma zle rozszerzenie';
  16. }
  17. }


natomiast jeśli chodzi o zmianę rozmiaru:
$source_file - to plik źródłowy
$max_dimension - maksymalny rozmiar dłuższego boku
$destination_file - ścieżka, gdzie ma zostać zapisany zmniejszony obrazek

  1. list($img_width,$img_height) = getimagesize($source_file);
  2. $aspect_ratio = $img_width / $img_height;
  3.  
  4. if ( ($img_width > $max_dimension) || ($img_height > $max_dimension) ) // wykonuje sie jesli rozmiar jest za duzy
  5. {
  6. if ( $img_width > $img_height ) // w przypadku za szerokich obrazow
  7. {
  8. $new_width = $max_dimension;
  9. $new_height = $new_width / $aspect_ratio;
  10. }
  11. elseif ( $img_width < $img_height ) // w przypadku za wysokich obrazow
  12. {
  13. $new_height = $max_dimension;
  14. $new_width = $new_height * $aspect_ratio;
  15. }
  16. elseif ( $img_width == $img_height ) // dla kwadratowych obrazkow
  17. {
  18. $new_width = $max_dimension;
  19. $new_height = $max_dimension;
  20. }
  21. else { echo "Blad przy pobieraniu wymiarow obrazka."; return FALSE; }
  22. }
  23. else { $new_width = $img_width; $new_height = $img_height; } // jezeli obrazek jest mniejszy, to nic nie rob.
  24.  
  25. $new_width = intval($new_width);
  26. $new_height = intval($new_height);
  27.  
  28. $thumbnail = imagecreatetruecolor($new_width,$new_height);
  29.  
  30. if ( strpos($source_file,".gif") ) { $img_source = imagecreatefromgif($source_file); }
  31. if ( (strpos($source_file,".jpg")) || (strpos($source_file,".jpeg")) )
  32. { $img_source = imagecreatefromjpeg($source_file); }
  33. if ( strpos($source_file,".bmp") ) { $img_source = imagecreatefromwbmp($source_file); }
  34. if ( strpos($source_file,".png") ) { $img_source = imagecreatefrompng($source_file); }
  35.  
  36. imagecopyresampled($thumbnail, $img_source, 0, 0, 0, 0, $new_width, $new_height, $img_width, $img_height);
  37. imagejpeg( $thumbnail, $destination_file, 100 );
  38.  
  39. imagedestroy($img_source);
  40. imagedestroy($thumbnail);
  41.  
  42.  
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.