Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] upload plików z jednoczesnym połączeniem dwóch zdjęć w jedno
Forum PHP.pl > Forum > Przedszkole
mpps
czy ktoś z Was spotkał się może z problemem łączenia dwóch lub kilku zdjęć w jedno w trakcie uploadu?
sytuacja wygląda tak:
1. ładowane są dwa zdjęcia poprzez formularz.
2. w trakcie uploadu zdjęcia są łączone w jedno (jedno pod drugim) i zapisywane jako jedno zdjęcie.

jak podejść do problemu?
czy powinno się przygotować najpierw jakiś szablon zdjęcia, na który zostaną 'wpisane' zdjęcia ładowane?
czy można się odwołać do współrzędnych na tym szablonie tak, aby wskazać od którego miejsca ma się odbyć 'wpisanie' obrazka?

ma ktoś pomysł?
to niech się, proszę, podzieli wiedzą winksmiley.jpg
Statozor
Odczytujesz ich wysokości i szerokości, tworzysz nowe puste o odpowiednich parametrach, potem przeklejasz odpowiednio zeskalowane do nowego i zapisujesz.
cornholio666
Poczytaj o tych funkcjach : http://pl2.php.net/manual/pl/ref.image.php
joshrob
witam,

miej tylko na uwadze problem opisan tutaj http://forumphp.nq.pl/php-skrypt-uploadujc...wer-t64588.html

pozdrawiam,
babejsza
A ja zaproponuję, żebyś dał sobie spokuj z biblioteką GD i zainteresował się ImageMagick. Daje znacznie więcej możliwości, i posiada całkiem pokaźny zbiór przykładów:

http://www.imagemagick.org/
http://www.imagemagick.org/Usage/
mpps
w końcu znalazłem czas, żeby znowu zająć się tematem i zrobiłem coś takiego:
  1. <?php
  2. // pobranie z formularza informacji o plikach
  3. $img1 = $_FILES['img1']['name'];
  4. $img2 = $_FILES['img2']['name'];
  5.  
  6. // okreslenie miejsca docelowego uploadowanych plikow
  7. $strUploadDir1 = 'img1/'.$_FILES['img1']['name'];
  8. $strUploadDir2 = 'img1/'.$_FILES['img2']['name'];
  9. $strUploadDir3 = 'img1/'.$_FILES['img1']['name'].'_'.$_FILES['img2']['name'];
  10.  
  11. // przeniesienie plikow
  12. move_uploaded_file($_FILES['img1']['tmp_name'], $strUploadDir1);
  13. move_uploaded_file($_FILES['img2']['tmp_name'], $strUploadDir2);
  14.  
  15. // pobranie informacji o wysokosci i szerokosci plikow
  16. // foto 1
  17. $size1 = getimagesize($strUploadDir1);
  18. // funkcja zmienia wymiary pierwszego zdjecia tak, aby jego szerokosc wynosila 200
  19. create_thumb_wfixed($strUploadDir1, $strUploadDir1, $width=200,$quality=90);
  20. // ponowne pobranie wymiarow juz zmienionego zdjecia
  21. $size1_mod = getimagesize($strUploadDir1);
  22.  
  23. // foto 2
  24. $size2 = getimagesize($strUploadDir2);
  25. // funkcja zmienia wymiary drugiego zdjecia tak, aby jego szerokosc wynosila 200
  26. create_thumb_wfixed($strUploadDir2, $strUploadDir2, $width=200,$quality=90);
  27. // ponowne pobranie wymiarow juz zmienionego zdjecia
  28. $size2_mod = getimagesize($strUploadDir2);
  29.  
  30. $width1 = $size1[0]; // szerokosc pierwszego oryginalnego zdjecia
  31. $height1 = $size1_mod[1]; // wysokosc pierwszego zmodyfikowanego zdjecia
  32. $width2 = $size2[0]; // szerokosc drugiego oryginalnego zdjecia
  33. $height2 = $size2_mod[1]; // wysokosc drugiego zmodyfikowanego zdjecia
  34. $height1height2 = $height1 + $height2;
  35.  
  36. $im = imagecreatetruecolor(200, $height1height2);
  37. $src1 = imagecreatefromjpeg($strUploadDir1);
  38. $src2 = imagecreatefromjpeg($strUploadDir2);
  39. $w = number_format(200, 0, ', ', '');
  40. $h = number_format($height1height2, 0, ', ', '');
  41. imagecopyresampled($im, $src1, 0, 0, 0, 0, $w, $h, 200, $height1height2);
  42. imagejpeg($im, $strUploadDir3, 90);
  43. $size3 = getimagesize($strUploadDir3);
  44. $width3 = $size3[0];
  45. $height3 = $size3[1];
  46. imagecopyresampled($im, $src2, 0, $height1, 0, 0, $w, $h, $width3, $height3);
  47. imagejpeg($im, $strUploadDir3, 90);
  48. imagedestroy($im);
  49.  
  50. unlink($strUploadDir1); // usuwamy pierwsze zdjecie
  51. unlink($strUploadDir2); // usuwamy drugie zdjecie
  52. ?>

pytania i problemy:
1. czy nie można prościej? może ma ktoś z Was pomysł?
2. czy można dokonać modyfikacji zdjęcia bez potrzeby jego ładowania do końcowego katalogu?
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.