Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem ze znakiem wodnym
northwest
post 28.09.2011, 08:13:45
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Witam serdecznie,
mam taką funkcję do generowania znaku wodnego:
  1. function gd_createf($adres) {
  2. $watermark="logo.png";
  3. header("Content-Type: image/jpeg");
  4. $transparency = 25; // przezroczystosc znaku wodnego
  5. $source_photo = stripslashes($adres);
  6. $photo = imagecreatefromjpeg($source_photo);
  7. $watermark = imagecreatefrompng($watermark);
  8. $watermark_width = imagesx($watermark);
  9. $watermark_height = imagesy($watermark);
  10. $size = getimagesize($source_photo);
  11. $dest_x = ($size[0] - $watermark_width);
  12. $dest_y = ($size[1] - $watermark_height);
  13. imagecopymerge($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
  14. imagejpeg($photo);
  15. imagedestroy($photo);
  16. imagedestroy($watermark);
  17. }



Wszystko byłoby z nią okey, gdyby nie to, że znak wodny jest w czarnym kwadracie (logo.png - jest przeźroczyste, bez tła). Wiecie może dlaczego?

Z góry dziękuje za pomoc,
Northwest
Go to the top of the page
+Quote Post
nospor
post 28.09.2011, 08:20:02
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jpeg nie zawiera przeźroczystości, a ty plik wynikowy zapisujesz jako jpg smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 28.09.2011, 08:22:02
Post #3





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


zgadza się... ale jak nakłam na JPG przeźroczystego png, to nie powinien ten znak wodny zostać jakby w takiej formie jak ten png?
Go to the top of the page
+Quote Post
nospor
post 28.09.2011, 08:31:42
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Masz rację.

Zamiast imagecopymerge powinieneś użyć imagecopyresampled()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 28.09.2011, 08:49:45
Post #5





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


jak zastąpię tak jak mówisz, to nic mi się nie wyświetla sad.gif
Go to the top of the page
+Quote Post
nospor
post 28.09.2011, 08:51:50
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale masz to zastąpić z głową.....
imagecopyresampled() ma trochę inne parametry. Wziąłeś to w ogóle pod uwagę?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 28.09.2011, 09:06:39
Post #7





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


  1. imagecopyresampled($photo, $photo, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);


zrobiłem coś takiego.... i zamiast loga, mam tam jakby kawałek zdjęcia głównego wink.gif
Go to the top of the page
+Quote Post
nospor
post 28.09.2011, 09:07:23
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$photo, $photo
no comments tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 30.09.2011, 09:17:33
Post #9





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


aaaaaaaaaaa racja wink.gif dzięki smile.gif

kurcze, prawie idealnie jest.... logo ładnie się nakłada, ale nie jest przeźroczyste - nakłada się to logo tak, jak wygląda w oryginale sad.gif
Go to the top of the page
+Quote Post
nospor
post 30.09.2011, 09:18:31
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No a pokaż ostatecznie jak wygląda kod.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 30.09.2011, 22:32:03
Post #11





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


mam taki kod (umieszcza poprawnie,ale bez przeźroczystości):
  1. <?php
  2. gd_createf($_GET['f']);
  3. function gd_createf($adres) {
  4. $watermark="logo.png";
  5. header("Content-Type: image/jpeg");
  6. $transparency = 70; // przezroczystosc znaku wodnego
  7. $source_photo = stripslashes($adres);
  8. $photo = imagecreatefromjpeg($source_photo);
  9. $watermark = imagecreatefrompng($watermark);
  10. $watermark_width = imagesx($watermark);
  11. $watermark_height = imagesy($watermark);
  12. $size = getimagesize($source_photo);
  13. $dest_x = ($size[0] - $watermark_width);
  14. $dest_y = ($size[1] - $watermark_height);
  15. //imagecopymerge($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
  16. imagecopyresampled($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);
  17. imagejpeg($photo);
  18. imagedestroy($photo);
  19. imagedestroy($watermark);
  20. }
  21. ob_end();
  22. ?>


jak coś, to mogę wgrać screena z tym jak to teraz wygląda... smile.gif

Ten post edytował northwest 30.09.2011, 10:52:55
Go to the top of the page
+Quote Post
nospor
post 3.10.2011, 10:24:29
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To zapodaj ten screen bo nie wiem czym się objawia błąd.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
northwest
post 3.10.2011, 10:51:44
Post #13





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


obrazek poprawny: http://www.stepby.pl/ok.jpg
obrazek nie poprawny: http://www.stepby.pl/bad.png


dziwne że to nie chce działać :/

Ten post edytował northwest 3.10.2011, 13:14:59
Go to the top of the page
+Quote Post
mls
post 3.10.2011, 13:36:15
Post #14





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Najprościej, korzystając z imagecopyresampled, byłoby już odpowiednio przygotować plik PNG tak, aby obrazek miał już odpowiednią dla znaku wodnego przezroczystość (czyli, krótko mówiąc, cały był półprzezroczysty).


--------------------
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: 19.07.2025 - 16:54