Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Watermark (znak wodny)
Forum PHP.pl > Inne > Komputery i oprogramowanie
iMax
Szukam sposobu na zabezpieczenie fotek na stronie poprzez moje logo w rogu zdjecia. Sa jakies spogramy ale wszystko platne. Znacie jakies sposoby ?
Strzałek
a znasz google?

http://google.pl/

Wchodzisz. Tam masz taką linijkę do wpisywania fraz.
Wpisujemy "php znak wodny".
I co!? Jest i to na samej gorze.

Proste nie? Ale zawsze lepiej napisać na forum i czekać na gotowe :/
revyag
Przenoszę na komputery i oprogramowanie
urbizdw
  1. <?php
  2. /**
  3.  * Klasa wstawia znak wodny do wszystkich obrazków znajdujących się w jednym kat
    alogu
  4.  * i wynik pracy zapisuje w plikach o takich samych nazwach, ale w innym katalog
    u.
  5.  * Sposób użycia jest przedstawiony pod definicją klasy.
  6.  * Całej konfiguracji dokonuje się w tablicy $this->config;
  7.  * Po usunięciu pierwszej linijki skrypt można wywoływać z poziomu przeglądarki 
    WWW.
  8.  * Bez tego zabiegu skrypt jest przeznaczony do wywoływania w wierszu poleceń po
    d linux'em
  9.  * (nie należy zapomnieć o fladze wykonywalności :] ).
  10.  * Zalecana jest jednak praca w wierszu poleceń, gdyż przetwarzanie może nieco p
    otrwać...
  11.  * Skrypt można wykorzystać pod warunkiem zachowania całego, nie zmienionego kom
    entarza.
  12.  *
  13.  * Kod bazuje na http://php.org.pl/artykuly/4/12
  14.  *
  15.  * @author Krzysztof Andrzej Błachut vel Bakus
  16.  */
  17. class znakwodny
  18. {
  19. /**
  20.  * Tablica konfiguracji
  21.  * @access public
  22.  */
  23. var $config = array(
  24. // Pozycja na jakiej ma zostać umieszczony znak wodny:
  25. // tl - lewy górny róg, tr - prawy górny róg
  26. // bl - lewy dolny róg, br - prawy dolny róg
  27. "pozycja" => "br",
  28. // obrazek ze znakiem wodnym:
  29. "znaczek" => "znaczek.png",
  30. // katalog z którego mają być brane obrazki:
  31. "katalog_zrodlowy" => "./zdjecia/",
  32. // katalog do którego mają trafiać już przerobione obrazki:
  33. "katalog_docelowy" => "./new/"
  34. );
  35. /**
  36.  * Tablica informacji o znaku wodnym
  37.  * @access private
  38.  */
  39. var $znaczek = array("w", "h", "handle");
  40.  
  41. /**
  42.  * Metoda inicjuje znak wodny do użycia
  43.  * @access public
  44.  */
  45. function utworz_znaczek()
  46. {
  47. $this->znaczek["handle"] = imagecreatefrompng($this->config["znaczek"]);
  48. $this->znaczek["w"] = imagesx($this->znaczek["handle"]);
  49. $this->znaczek["h"] = imagesy($this->znaczek["handle"]);
  50. }
  51.  
  52. /**
  53.  * Metoda stara się dodać do wszystkich plików we wskazanym katalogu znak wodny
  54.  * @access public
  55.  */
  56. function naloz_katalog()
  57. {
  58. $dir = opendir($this->config["katalog_zrodlowy"]);
  59. while (($file = readdir($dir)) !== false)
  60. {
  61. if($file != "." && $file != "..")
  62. {
  63. $this->naloz($file);
  64. }
  65. }
  66. closedir($dir);
  67. }
  68.  
  69. /**
  70.  * Metoda nakłada znak wodny na wskazany obrazek
  71.  * @access public
  72.  */
  73. function naloz($plik)
  74. {
  75. $image = imagecreatefromjpeg($this->config["katalog_zrodlowy"] . $plik);
  76. $plik_w = imagesx($image);
  77. $plik_h = imagesy($image);
  78.  
  79. switch($this->config["pozycja"])
  80. {
  81. case "tl":
  82. $od_x = 0;
  83. $od_y = 0;
  84. break;
  85. case "tr":
  86. $od_x = $plik_w - $this->znaczek["w"];
  87. $od_y = 0;
  88. break;
  89. case "bl":
  90. $od_x = 0;
  91. $od_y = $plik_h - $this->znaczek["h"];
  92. break;
  93. case "br":
  94. $od_x = $plik_w - $this->znaczek["w"];
  95. $od_y = $plik_h - $this->znaczek["h"];
  96. break;
  97. }
  98.  
  99. imagecopy($image, $this->znaczek["handle"], $od_x, $od_y, 0, 0, $this->znaczek["w"], $this->znaczek["h"]);
  100. imagejpeg($image, $this->config["katalog_docelowy"] . $plik);
  101. imagedestroy($image);
  102. print $this->config["katalog_docelowy"] . $plik . " readyn";
  103. flush();
  104. }
  105.  
  106. /**
  107.  * Metoda zwalnia pamięć po użytym znaku wodnym
  108.  * @access public
  109.  */
  110. function finalize()
  111. {
  112. imagedestroy($this->znaczek["handle"]);
  113. print "nDone!n";
  114. }
  115. }
  116.  
  117. $zw = new znakwodny();
  118. $zw->utworz_znaczek();
  119. $zw->naloz_katalog();
  120. $zw->finalize();
  121. ?>
TomASS
A na php.net jest coś takiego
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.