Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nanoszenie przeźroczystego obrazu(watermark)
Forum PHP.pl > Forum > PHP
bartkam
  1. <?php
  2. $watermark="http://www.ceel.pl/images/photoalbum/wa.png";
  3.  
  4. $transparency = 30; // przezroczystosc znaku wodnego
  5.  
  6. $source_photo = $photo_dest.$photo_file;
  7.  
  8. switch($photo_ext)
  9.  
  10. {
  11.  
  12. case '.jpg': imagecreatefromjpeg($adres); break;
  13.  
  14. case '.gif': imagecreatefromgif($adres); break;
  15.  
  16. case '.png': imagecreatefrompng($adres); break;
  17.  
  18. default: echo 'Błąd zapisu 1'; exit;
  19.  
  20. }
  21.  
  22. switch($photo_ext)
  23.  
  24. {
  25.  
  26. case '.jpg': $photo = imagecreatefromjpeg($source_photo); break;
  27.  
  28. case '.gif': $photo = imagecreatefromgif($source_photo); break;
  29.  
  30. case '.png': $photo = imagecreatefrompng($source_photo); break;
  31.  
  32. default: echo 'Błąd zapisu 2'; exit;
  33.  
  34. }
  35.  
  36. $watermark = imagecreatefrompng($watermark);
  37.  
  38. $watermark_width = imagesx($watermark);
  39.  
  40. $watermark_height = imagesy($watermark);
  41.  
  42. $size = getimagesize($source_photo);
  43.  
  44. $dest_x = ($size[0] - $watermark_width);
  45.  
  46. $dest_y = ($size[1] - $watermark_height);
  47.  
  48. imagecopymerge($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
  49.  
  50.  
  51.  
  52. imagepng($photo,$photo_dest.$photo_file);
  53.  
  54.  
  55.  
  56. imagedestroy($photo);
  57.  
  58. imagedestroy($watermark);
  59. ?>
Mam taki oto kod:


Kod ten ma wstawiać znak wodny w prawym dolnym rogu danego mu obrazu. Znak wodny jest wstawiany ale jest problem z przeźroczystością. Tzn: na znaku wodnym(wa.png) mam tekst z przeźroczystym tłem ale gdy zostanie on naniesiony na obraz to niema przeźroczystego tła tylko zmienia się ono na czarne (http://ceel.pl/images/photoalbum/album_3/pict0049.jpg)
Jak zrobić żeby tło było całkowicie przeźroczyste a tekst półprzeźroczysty?
bartg
Dodaj normalne bbCodes i jakieś entery bo to nie czytelne jest
bartkam
Po wysłaniu posta wszystko było ok tylko później coś scaliło wszystkie linijki. Teraz już poprawione.
bartg
Nakładaj tekst już w 30% przezroczysty. Moim zdaniem to twój WM ma czarne tło tylko 100% przezroczyste. A ty je zmieniasz na 30% i tyle.

Jak WM bedzie juz przygotowany (tło przezroczyste,, tekst 30%) to zamiast:
  1. <?php
  2. imagecopymerge($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
  3. ?>

daj
  1. <?php
  2. imagecopymerge($photo, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  3. ?>
bartkam
Niestety to nic nie dało. Po usunięciu ostatniego argumentu funkcji obrazek wcale się nie wstawia. Zresztą tak jest opisane w manualu że przy 0 nie jest wstawiany obraz. Mam zrobiony png http://www.ceel.pl/images/photoalbum/wa.png ma 50% przeźroczystości na tekście i tło 100%. Może jest jakaś inna funkcja do naniesienia obrazka?

Już rozwiązałem problem. Poszukałem w manualu i znalazłem funkcję imagecopy();. Teraz działa tak jak powinno.
obelix94
Spóbuj zrobić ten obrazek w gifie. Zawsze jak potrzebowałem przeźroczystość stosowałem gifa.

Przeźroczystość zrób np. 25% i w obrazku 25% i otrzymasz 50%  tongue.gif

Jak pomogłem (choć nie sądze) kliknij pomógł  cool.gif



Pozdro
bartkam
Już rozwiązałem problem, napisałem to post wyżej. A tak poza tym to jak chcesz ustawić przeźroczystość 25% w gifie sadsmiley02.gif i w jaki sposób zsumują cie się te procenty? hehe
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.