Intereting Posts
Laravel: как получить среднее значение для вложенных отношений hasMany (hasManyThrough) CodeIgniter index.php Переписывание URL-адресов OVH Являются ли mysql_real_escape_string () и mysql_escape_string () достаточными для безопасности приложения? Использование нескольких баз данных в CodeIgniter Как рекурсивно создать многомерный массив? Как загрузить файл с PHP, curl и HTTP POST путем потоковой передачи файла? Разрыв конструктора Мои файлы cookie доступны только на страницах PHP, на которые они установлены, это нормально? PHP, определяющий кодировку файловой системы PHP и MySQL – самая маленькая и самая большая возможная дата JOB_TOO_BIG Pheanstalk – что можно сделать? Phonegap В запрошенном ресурсе присутствует заголовок «Access-Control-Allow-Origin». Происхождение 'null', следовательно, не допускает доступа Laravel eloquent – Отношения для многих В php я отправляю почту с помощью mail (), она не должна сохраняться в папке отправленных элементов PHP, json_encode, json_decode объекта SimpleXML

Как я могу повторить водяной знак во всем запрошенном изображении с помощью PHP?

Я пытаюсь добавить водяной знак ко всем изображениям в каталоге, скажем, www.example.com/private. Некоторые из этих изображений имеют массовые разрешения, в то время как другие относительно нормальны, поэтому в настоящий момент мой водяной знак отлично работает для небольших изображений. Даже центрируя водяной знак, я все еще оставляю желаемые участки более крупных изображений, уязвимых для обрезки.

Поэтому мой вопрос заключается в том, как я могу написать сценарий php для повторения водяного знака по всему изображению, как по вертикали, так и по горизонтали? Я не знаю достаточно о разработке на заднем плане, за исключением того, что я знаю, что требуется обеспечить адекватную защиту от водяных знаков, поэтому я искал google и мог найти это только http://www.regardadesign.co.uk/ blog / post / php-image-manipulation / 15 , который не работает.

До сих пор я поместил следующий файл .htaccess в каталог / private:

<IfModule mod_rewrite.c> RewriteCond %{REQUEST_FILENAME} -f RewriteRule \.(gif|jpeg|jpg|png)$ /admin/watermark.php [QSA,NC] </ifModule>" 

И это сценарий в файле watermark.php:

 <?php ini_set('memory_limit','200M'); $path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']; $image = imagecreatefromstring(file_get_contents($path)); $w = imagesx($image); $h = imagesy($image); $watermark = imagecreatefrompng('watermark.png'); $ww = imagesx($watermark); $wh = imagesy($watermark); imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh); header('Content-type: image/jpeg'); imagejpeg($image); imagedestroy($image); imagedestroy($watermark); exit(); ?> 

Это происходит потому, что вы вставляете водяной знак только один раз. Если вы повторите водяной знак вдоль области изображения, он сделает трюк.

Замените вашу линию imagecopy для этого:

 $img_paste_x = 0; while($img_paste_x < $w){ $img_paste_y = 0; while($img_paste_y < $h){ imagecopy($image, $watermark, $img_paste_x, $img_paste_y, 0, 0, $ww, $wh); $img_paste_y += $wh; } $img_paste_x += $ww; }