Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze znakiem wodnym w php
Paul149
post 22.10.2020, 21:25:40
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


Witam jak w temacie, czy ktoś mógłby mi pomóc z kodem w php? nie dodaje znaku wodnego i nie zapisuje się na ftp, bez kodu ze znakiem wodnym wszystko działa prawidłowo

  1. foreach ($_FILES["plik"]["error"] as $key => $error)
  2. {
  3. if ($error == UPLOAD_ERR_OK) {
  4. $addnews_query = $mysql->query("INSERT INTO `photos` (`id`, `Type`) VALUES ('$post_id', 'test')");
  5. $img_insert_id = $mysql->insert_id;
  6.  
  7. $file_tmp = $_FILES["plik"]["tmp_name"][$key];
  8. $file_name = $_FILES["plik"]["name"][$key];
  9. //$file_up_name = time();
  10.  
  11. $true_hash = $img_insert_id;
  12.  
  13. //$file_hash = str_replace('=', '', base64_encode($true_hash));
  14. if (is_uploaded_file($file_tmp))
  15. {
  16. $image = imagecreatefromjpeg($true_hash);
  17. $watermark = imagecreatefromjpeg('/template/new/img/inf.png');
  18. $width = imagesx($image);
  19. $height = imagesy($image);
  20. $watermark_width = imagesx($watermark);
  21. $watermark_height = imagesy($watermark);
  22. imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100);
  23.  
  24. header('Content-Type: image/jpeg');
  25. imagejpeg($image);
  26. imagedestroy($image);
  27. imagedestroy($watermark);
  28.  
  29. move_uploaded_file($file_tmp, '../uploads/photos/' .$image. '.jpg');
  30. $query = $mysql->query("UPDATE `photos` SET `Address` = '$file_hash' WHERE `id` = '$post_id'");
  31. }
  32. }
  33. }
Go to the top of the page
+Quote Post
SmokAnalog
post 22.10.2020, 23:46:25
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Chcesz wyświetlać te obrazki? Nie wczytywałem się aż tak w ten kod, ale spróbuj zamienić $true_hash = $img_insert_id; na $true_hash = file_get_contents($file_tmp);
Go to the top of the page
+Quote Post
Paul149
post 23.10.2020, 01:12:49
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


Chciałem żeby na ftp mi się zapisywały zdjęcie ze znakiem wodnym z nazwa -> id zdjęcia mysql, bez znaku wodnego działa mi to znakomicie, ale ze znakiem wodnym już nie zapisuje na ftp
Go to the top of the page
+Quote Post
viking
post 23.10.2020, 05:45:12
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A masz taką ścieżkę /template/new/img/inf.png? Włącz wyświetlanie błędów.


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 23.10.2020, 10:46:13
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Spojrzałem drugim okiem i jest pełno baboli.

Przejrzyj sobie tutoriale albo dokumentację PHP GD. $image to zasób obrazka, a nie jakiś tekst. A żeby zapisać obrazek, musisz podać drugi parametr ze ścieżką pliku. Twój kod próbuje tylko wyświetlić ten obrazek. Content-Type jest niepotrzebny do zapisywania.
Go to the top of the page
+Quote Post
Paul149
post 23.10.2020, 22:26:24
Post #6





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


możesz mi jakoś pomoc z tym kodem? byłbym wdzięczny
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 13:19:29
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Musisz przede wszystkim odczytać obrazek i go zapisać, np.:

  1. $image = imagecreatefromjpeg($file_tmp);
  2.  
  3. // ...
  4.  
  5. imagejpeg($image, '../uploads/photos/' . $img_insert_id . '.jpg');
  6.  
  7. move_uploaded_file($file_tmp, '../uploads/photos/' . $img_insert_id . '-original.jpg');


Trochę tutaj własnych założeń zastosowałem. Zapisałem obrazek jako po prostu np. 3.jpg (ze znakiem wodnym) i 3-original.jpg bez znaku wodnego. Nie wiem czy chcesz też zapisywać obrazki bez znaku wodnego, czy nie. Dostosuj to pod siebie. I tak jak mówiłem, header() do ustawiania Content-Type jest zbędny.
Go to the top of the page
+Quote Post
Paul149
post 24.10.2020, 15:19:06
Post #8





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


  1. if($query)
  2. {
  3. echo '<center><div class="login_ok">Dodane!</div></center>';
  4. foreach ($_FILES["plik"]["error"] as $key => $error)
  5. {
  6. if ($error == UPLOAD_ERR_OK) {
  7. $addnews_query = $mysql->query("INSERT INTO `photos` (`cid`, `Type`) VALUES ('$post_id', 'annoncement')");
  8. $img_insert_id = $mysql->insert_id;
  9.  
  10. $file_tmp = $_FILES["plik"]["tmp_name"][$key];
  11. $file_name = $_FILES["plik"]["name"][$key];
  12. //$file_up_name = time();
  13.  
  14. $obraz = $img_insert_id;
  15.  
  16. //$file_hash = str_replace('=', '', base64_encode($true_hash));
  17. if (is_uploaded_file($file_tmp))
  18. {
  19. $image = imagecreatefromjpeg($file_tmp);
  20. $watermark = imagecreatefromjpeg('text.gif');
  21. $width = imagesx($image);
  22. $height = imagesy($image);
  23. $watermark_width = imagesx($watermark);
  24. $watermark_height = imagesy($watermark);
  25. imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100);
  26.  
  27. imagejpeg($image, '../uploads/photos/' . $img_insert_id . '.jpg');
  28.  
  29. move_uploaded_file($file_tmp, '../uploads/photos/' .$img_insert_id. '-test.jpg');
  30. $query = $mysql->query("UPDATE `photos` SET `Address` = '$file_hash' WHERE `id` = '$post_id'");
  31. }
  32. }
  33. }
  34. echo'<div class="linkok"><a href="/'.$admin.'/annoncement.php">Wróc na stronę</a></div>';
  35. break;
  36. }



aktualnie nie zapisuje ze znakiem wodnym na ftp
tyle ze z imagejpeg dodaje tylko jeden plik, a na stronie jest multipload
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 18:33:19
Post #9





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Pobawiłem się chwilę Twoim kodem i do poprawy jest to:

1. Używasz znaku wodnego w formacie GIF, więc powinno być imagecreatefromgif() zamiast imagecreatefromjpeg().
2. Czy ten break na końcu nie jest błędem? Nie ma tu na zewnątrz żadnej pętli, chyba że pokazałeś tylko wycinek.

Udało mi się doprowadzić ten kod do stanu używalności, tzn. zapisał mi każdy obrazek w wersji zwykłej i ze znakiem wodnym text.gif w prawym dolnym rogu.

Ten post edytował SmokAnalog 24.10.2020, 18:33:38
Go to the top of the page
+Quote Post
Paul149
post 24.10.2020, 20:53:55
Post #10





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


ten break jest zrobiony tak że jak wykona się skrypt to nie pojawia się formularz tylko link
ja próbowałem na lewo i prawo i nie udaje mi się

Po za tym jak wspomniałem przy jednym zdjęciu zapisuje na ftp tyle że bez znaku wodnego
a przy większej ilości zdjęć to zapisuje tylko jedne zdjęcie.
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 21:06:03
Post #11





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Włącz sobie wyświetlanie błędów przede wszystkim i zobacz jakie są błędy.

Czyli jak wysyłasz np. dwa obrazki, to które dokładniej są prawidłowo generowane? Dostajesz tylko pierwszy obrazek bez znaku wodnego?
Go to the top of the page
+Quote Post
Paul149
post 24.10.2020, 21:08:49
Post #12





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


teraz wysyła wszystkie ale w żadnym nie generuje znaku wodnego.
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 21:12:17
Post #13





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A zmieniłeś na imagecreatefromgif() i jesteś pewien, że ten obrazek ze znakiem wodnym ma prawidłową ścieżkę? Sam kod nakładania znaku wodnego jest w porządku, sprawdziłem.
Go to the top of the page
+Quote Post
Paul149
post 24.10.2020, 21:14:14
Post #14





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


bool(false) bool(false)

taki błąd mi pokazało
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 21:16:20
Post #15





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


To nie jest błąd, tylko wartość czegoś, nawet nie wiem czego.
Go to the top of the page
+Quote Post
Paul149
post 24.10.2020, 21:19:23
Post #16





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

Ostrzeżenie: (0%)
-----


Teraz działa, dzięki bardzo wszystko jestok, okazał się błąd w ścieżce do pliku gif
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2020, 21:25:18
Post #17





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


No widzisz, czasem trzeba sprawdzić wszystko smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 12:46