Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] watermark
Forum PHP.pl > Forum > Przedszkole
emajl22
pisze skrypt nakladania znaczka wodnego na zdjecia. znalazlem w internecie kilka takich skryptow, ale ja potrzebuje zrobic to tak, ze wrzuca sie zdjecie przez formularz i naklada sie znak wodny na zdjecie, a nastepnie skrypt przenosi zdjecie juz ze znakiem wodnym na serwer.

  1. <?php
  2.  
  3. if (isset($_POST['w'])) {
  4. $imagesource = $_FILES['img']['tmp_name'];
  5. $watermarkPath = "w.png";
  6. $watermark_w = imagesx($watermarkPath);
  7. $watermark_h = imagesy($watermarkPath);
  8. imagecopy($imagesource, $watermarkPath, 0, 0, 0, 0, $watermark_w, $watermark_h );
  9. $img_name = $_FILES['img']['name'];
  10. move_uploaded_file($img_tmp_name, "./$img_name");
  11. }
  12.  
  13. ?>
  14.  
  15. <form action="" method="post" enctype="multipart/form-data">
  16. <input type="hidden" name="MAX_FILE_SIZE" value="500000000" />
  17. <input type="file" name="img" />
  18. <input type="submit" name="w" />
  19. </form>

nie wiem jak przeniesc zdjecie ze znakiem wodnym na serwer..

i takie bledy wyskakuja:
  1. Warning: imagesx() expects parameter 1 to be resource, string given in
  2.  
  3. Warning: imagesy() expects parameter 1 to be resource, string given in
  4.  
  5. Warning: imagecopy() expects parameter 1 to be resource, string given in
drozdii07
No jak byk jest napisane, że dałeś w parametrze stringa.. a powinno być coś innego.
peter13135
błąd wyraźnie mówi, że te funkcje oczekują jako parametr "resource" (np. wyplute przez imagecreate) , a nie stringa. proponuję użyć alternatywnie funkcji copy, oraz getimagesize
emajl22
wersja poprawiona, ale nadal cos nie dziala:
  1. <?php
  2.  
  3. if (isset($_POST['w'])) {
  4. $imagesource = imagecreatefromjpeg('tapeta.jpg');
  5. $watermarkPath = imagecreatefrompng('w.png');
  6. $watermark_w = imagesx($watermarkPath);
  7. $watermark_h = imagesy($watermarkPath);
  8. $image_w = imagesx($imagesource);
  9. $image_h = imagesy($imagesource);
  10. imagecopymerge($imagesource, $watermarkPath, $image_w, $image_y, 0, 0, $watermark_w, $watermark_h, 30);
  11. $img_tmp_name = $_FILES['img']['tmp_name'];
  12. $img_name = $_FILES['img']['name'];
  13. move_uploaded_file($img_tmp_name, "./test-$img_name");
  14. }
  15.  
  16. ?>
  17.  
  18. <form action="" method="post" enctype="multipart/form-data">
  19. <input type="hidden" name="MAX_FILE_SIZE" value="500000000" />
  20. <input type="file" name="img" />
  21. <input type="submit" name="w" />
  22. </form>

nie naklada znaku wodnego na obrazek, bledow nie ma, obrazek sie wrzuca poprawnie
CuteOne
yyy a gdzie masz zapis stworzonego obrazka? smile.gif
emajl22
a musze najpierw wyslac zdjecie na serwer czy moge od razu nalozyc na wrzucane zdjecie znak i dopiero wrzucic na serwer?

mam cos takiego:
  1. <?php
  2.  
  3. if (isset($_POST['w'])) {
  4.  
  5. $imageupload_tmp_name = $_FILES['img']['tmp_name'];
  6. $imageupload_name = $_FILES['img']['name'];
  7. move_uploaded_file($imageupload_tmp_name, "./$imageupload_name");
  8.  
  9. $watermarkPath = "w.png";
  10.  
  11. $image = imagecreatefromjpeg($imageupload_name);
  12. $watermark = imagecreatefrompng($watermarkPath);
  13.  
  14. $watermark_size = getimagesize($watermarkPath);
  15. $watermark_w = $watermark_size[0];
  16. $watermark_h = $watermark_size[1];
  17.  
  18. $image_size = getimagesize($imageupload_name);
  19. $dest_x = $image_size[0] - $watermark_w;
  20. $dest_y = $image_size[1] - $watermark_h;
  21.  
  22. imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h);
  23.  
  24. move_uploaded_file(tutaj nie wiem co dac, "i tu tez");
  25.  
  26. /*header("Content-type: image/jpeg");
  27. imagejpeg($image);
  28. imagedestroy($image);
  29. imagedestroy($watermark);*/
  30.  
  31.  
  32.  
  33. }
  34.  
  35. ?>
  36.  
  37. <form action="" method="post" enctype="multipart/form-data">
  38. <input type="hidden" name="MAX_FILE_SIZE" value="500000000" />
  39. <input type="file" name="img" />
  40. <input type="submit" name="w" />
  41. </form>

naklada obrazek, ale nie wiem jak to teraz wrzucic na serwer ;d
peter13135
obrazek możesz zapisać za pomocą imagejpeg()
zainteresuj się pozostałymi parametrami, jakie przyjmuje ta funkcja
emajl22
wielkie dzieki
1010
polecam tą klasę: http://www.verot.net/php_class_upload_samp...89c2ab421585c66

Operacje na grafice dzięki niej to prosta sprawa
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.