Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Znak wodny z tekstem użytkownika
Forum PHP.pl > Forum > Przedszkole
aram100
Witam

Mam na mojej stronce formularz do wysyłania zdjęć na serwer.

  1. <form action="upload.php" method="post" enctype="multipart/form-data">
  2. Wybierz plik do wysłania:
  3. <input type="file" name="fileToUpload" id="fileToUpload">
  4. <input type="submit" value="Wyślij plik" name="upload">


  1. <?php
  2. $target_dir = "images/";
  3. $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
  4. $uploadOk = 1;
  5. $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
  6.  
  7. if ($_FILES["fileToUpload"]["size"] > 1048576) {
  8. echo "Błąd, plik ma zbyt duży rozmiar. ";
  9. $uploadOk = 0;
  10. }
  11.  
  12. if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") {
  13. echo "Błąd, tylko rozszerzenia JPG, JPEG, PNG są dozwolone. ";
  14. $uploadOk = 0;
  15. }
  16.  
  17. if ($uploadOk == 0) {
  18. echo "Plik nie został przesłany.";
  19. } else {
  20. if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
  21. echo "Plik ". basename( $_FILES["fileToUpload"]["name"]). " został przesłany.";
  22. } else {
  23. echo "Błąd, plik nie został przesłany!";
  24. }
  25. }
  26.  
  27. ?>


Chciałbym tworzyć dodatkowo podczas tego przesyłania zdjęcie z tekstowym znakiem wodnym, ale ten tekst ma być podawany przez użytkownika.

W HTML'u dodanie pola - <input type="text" name="znak" />

Czytałem coś o bibliotece GD, znalazłem gotowce np.:

  1. $imageURL = 'obrazek.png';
  2. list($width,$height) = getimagesize($imageURL);
  3. $imageProperties = imagecreatetruecolor($width, $height);
  4. $targetLayer = imagecreatefrompng($imageURL);
  5. imagecopyresampled($imageProperties, $targetLayer, 0, 0, 0, 0, $width, $height, $width, $height);
  6. $WaterMarkText = 'znak';
  7. $watermarkColor = imagecolorallocate($imageProperties, 191,191,191);
  8. imagestring($imageProperties, 5, 130, 117, $WaterMarkText, $watermarkColor);
  9. header('Content-type: image/jpeg');
  10. imagejpeg($im, null, 90);
  11. imagepng ($imageProperties);
  12. imagedestroy($targetLayer);
  13. imagedestroy($imageProperties);


Ale jak zrobić żeby ten skrypt:
1. Brał tekst od użytkownika
2. Zapisywał nowy plik w folderze docelowym.

Może głupie pytania ale w php robię coś drugi dzień :/
Evinek
Dodajesz dodatkowe pole w formularzu.
Odbierasz je przez tablicę $_POST.
Modyfikujesz obrazek odebrany przez formularz (ten z tablicy $_FILES) i dodajesz do niego napis korzystając z np. $_POST['znak']. Ten gotowiec powinien się sprawdzić do tego.

Pisanie po obrazku: http://php.net/manual/en/function.imagestring.php

Po stworzeniu obrazka możesz go zapisać. Użyj do tego imagejpeg lub inne podobne, drugi parametr Cie interesuje:
http://php.net/manual/en/function.imagejpeg.php

Jeśli nie wiesz jak to zrobić to poczytaj sobie jakieś poradniki jak odbierać formularze, jak działa biblioteka GD itp.
Najważniejsze rzeczy masz podane, musisz po prostu tego użyć.
Jeśli nie wiesz czy dane są przesyłane to debuguj sobie przez np. var_dump($_POST).
Sprawdź sobie każdą metodę w manualu aby zobaczyć co dokładnie robią.
aram100
Co do zapisywania obrazka - mogę określić folder docelowy i dodatkowo zrobić tak, aby zapisywał się ten obrazek ze znakiem w postaci "nazwaplikuZnak" ?

patwoj98
Możesz. Tu już tylko i wyłącznie potrzebna będzie konkatenacja.

  1. "nazwa_pliku_cos_tam".$znak.'.jpg"
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.