Guest User

Untitled

a guest
Feb 25th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1. <?
  2. waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'],
  3. "watermark.png", "bottom=5,right=5");
  4.  
  5. function waterMark($original, $watermark, $placement = 'bottom=5,right=5',
  6. $destination = null) {
  7. $original = urldecode($original);
  8. $info_o = @getImageSize($original);
  9. if (!$info_o)
  10. return false;
  11. $info_w = @getImageSize($watermark);
  12. if (!$info_w)
  13. return false;
  14.  
  15. list ($vertical, $horizontal) = split(',', $placement,2);
  16. list($vertical, $sy) = split('=', trim($vertical),2);
  17. list($horizontal, $sx) = split('=', trim($horizontal),2);
  18.  
  19. switch (trim($vertical)) {
  20. case 'bottom':
  21. $y = $info_o[1] - $info_w[1] - (int)$sy;
  22. break;
  23. case 'middle':
  24. $y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy;
  25. break;
  26. default:
  27. $y = (int)$sy;
  28. break;
  29. }
  30.  
  31. switch (trim($horizontal)) {
  32. case 'right':
  33. $x = $info_o[0] - $info_w[0] - (int)$sx;
  34. break;
  35. case 'center':
  36. $x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx;
  37. break;
  38. default:
  39. $x = (int)$sx;
  40. break;
  41. }
  42.  
  43. header("Content-Type: ".$info_o['mime']);
  44. //получаем оригинал картинки и водный знак
  45. $original = @imageCreateFromString(file_get_contents($original));
  46. $watermark = @imageCreateFromString(file_get_contents($watermark));
  47. //Подготавливаем пустое изображение
  48. $out = imageCreateTrueColor($info_o[0],$info_o[1]);
  49. $thumb = imagecreatetruecolor(100, 50);
  50. $width = imagesx($watermark);
  51. $height = imagesy($watermark);
  52. imagecopyresized($thumb, $watermark, 0, 0, 0, 0, 100, 50,
  53. $width, $height);
  54. //Накладываем оригинал на подготовленное изображение
  55. imageCopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);
  56.  
  57. //Тут задаем размер изображения в которые можно добавлять Watermark
  58. // $info_o[0] > 250 - ширина изображения должна быть больше 250 px
  59. // $info_o[1] > 250 - высота изображения должна быть больше 250 px
  60.  
  61. if( ($info_o[0] > 250) && ($info_o[1] > 250) )
  62. {
  63. //Накладываем водный знак на оригинал
  64. imageCopy($out, $thumb, $x, $y, 0, 0, $info_w[0], $info_w[1]);
  65. }
  66. //Выводим изображение в случаях с разными форматами
  67. switch ($info_o[2]) {
  68. case 1:
  69. imageGIF($out);
  70. break;
  71. case 2:
  72. imageJPEG($out);
  73. break;
  74. case 3:
  75. imagePNG($out);
  76. break;
  77. }
  78.  
  79. imageDestroy($out);
  80. imageDestroy($original);
  81. imageDestroy($watermark);
  82.  
  83. return true;
  84. }
  85.  
  86. ?>
  87.  
  88. <?
  89.  
  90. waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png");
  91.  
  92. function waterMark($original, $watermark) {
  93.  
  94.  
  95. $original = urldecode($original);
  96. //получаем размеры оригинала и ватермарка в виде массива, где 0 - ширина, 1 - высота, 2 - тип в числе (1-gif, 2-jpeg,3-png), mime - тип для заголовка image/jpeg например
  97. $info_o = @getImageSize($original);
  98. if (!$info_o)
  99. return false;
  100. $info_w = @getImageSize($watermark);
  101. if (!$info_w)
  102. return false;
  103. $original = @imageCreateFromString(file_get_contents($original));
  104. $watermark = @imageCreateFromString(file_get_contents($watermark));
  105. $water_width = imagesx($watermark);
  106. $water_height = imagesy($watermark);
  107. //Задаем параметры ширины и высоты ватермарка в зависимости от оригинала
  108. $percent_w = $info_o[0] * 0.25;
  109. $percent_h = $info_o[1] * 0.25;
  110. $water_stamp = imagecreatetruecolor($percent_w, $percent_h);
  111. header("Content-type: ".$info_o['mime']);
  112. //Сохраняем прозрачность ватермарка
  113. imagealphablending( $water_stamp, false );
  114. imagesavealpha( $water_stamp, true );
  115. //ресайзим ватермарк
  116. imagecopyresampled($water_stamp, $watermark, 0, 0, 0, 0, $percent_w, $percent_h, $water_width, $water_height);
  117. //задаем координаты расположения ватермарка от левого края ширина оригинала - ширина ватера - отступ, точно также по высоте начиная с верха
  118. $x = $info_o[0] - $percent_w - 10;
  119. $y = $info_o[1] - $percent_h - 10;
  120. //накладываем ватермарк
  121. imageCopy($original, $water_stamp, $x, $y, 0, 0, $percent_w, $percent_h);
  122. //выводим в соответствии с типом файла
  123. switch ($info_o[2]) {
  124. case 1:
  125. imageGIF($original);
  126. break;
  127. case 2:
  128. imageJPEG($original);
  129. break;
  130. case 3:
  131. imagePNG($original);
  132. break;
  133. }
  134. //очищаем память
  135. imageDestroy($original);
  136. imageDestroy($watermark);
  137. imageDestroy($water_stamp);
  138.  
  139. return true;
  140. }
  141.  
  142. ?>
Add Comment
Please, Sign In to add comment