Intereting Posts
PHP динамический блок выбора MYSQL Мне нужен сайт для тестирования Facebook Connect? Не получайте сообщение об ошибке, если имя входа неверно, просто пустой div, но я могу определить неправильный пароль, если имя пользователя правильно как остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался Еореп (); «Удаленный доступ к файлу хоста не принят» в локальном файле? Форма поиска с PDO Закрытие вызова, присвоенное объекту напрямую Файл вложения с формой php в wordpress максимальная максимальная максимальная максимальная производительность при достижении уровня 200 Как скачать с php google trend / insign cvs файл? как обойти Access-Control-Allow-Origin? Как сжать сообщение об ошибке из PDO? Викисловарь API для произношения? Переопределить общедоступный метод в подклассе таким образом, чтобы ограничивать доступ к общедоступным данным, сохраняя при этом доступ к родительскому классу? Как использовать Laravel hasManyThrough через 4 таблицы

Эффект размытия по-разному в PHP / GD

Мне нужно обфускать определенную область изображения с помощью PHP и GD, в настоящее время я использую следующий код:

for ($x = $_GET['x1']; $x < $_GET['x2']; $x += $pixel) { for ($y = $_GET['y1']; $y < $_GET['y2']; $y += $pixel) { ImageFilledRectangle($image, $x, $y, $x + $pixel - 1, $y + $pixel - 1, ImageColorAt($image, $x, $y)); } } 

Это в основном заменяет выбранную область квадратами пикселей в пикселях. Я хочу выполнить какой-то эффект размытия (гауссовский), я знаю, что могу использовать функцию ImageFilter ():

 ImageFilter($image, IMG_FILTER_GAUSSIAN_BLUR); 

Но он размывает весь холст, моя проблема в том, что я просто хочу размыть определенную область.

Solutions Collecting From Web of "Эффект размытия по-разному в PHP / GD"

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

Пример:

 $image2 = imagecreate($width, $height); imagecopy ( $image2 , $image , 0 , 0 , $x , $y , $width , $height); imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); imagecopy ($image, $image2, $x, $y, 0, 0, $width, $height); 

Я не проверял документацию для imagefilter, и я не знаю, возможно ли это, или есть эквивалент применения этого (части) изображения. Но предполагая, что нет, почему бы и нет:

  1. Скопируйте часть, которую хотите размыть, на новое (временное) изображение GD (нет необходимости записывать его на диск, просто назначьте его новой переменной temp).
  2. Примените гауссовский фильтр размытия к этому временному изображению.
  3. Скопируйте полученное (отфильтрованное) изображение прямо туда, откуда оно было (функциональность для этого, безусловно, находится в библиотеке GD)