Как пикселировать часть изображения с помощью ImageMagick? - PullRequest
4 голосов
/ 18 ноября 2010

Я пытаюсь найти способ пикселировать только часть изображения, но пока безуспешно.

В настоящее время я изучаю следующий урок: http://www.mutinydesign.co.uk/free-scripts/live-photo-blurring-script/

Использование плагина jQuery «imgAreaSelect», чтобы пользователи могли выбирать часть изображения из пользовательского интерфейса. Затем нажмите «pixelate». Затем он выполняет ajax-вызов функции pixelate, написанной на php для imagemagick. Функция pixelate выглядит следующим образом:

<?php
$x1 = $_GET['x1'];
$y1 = $_GET['y1'];
$x2 = $_GET['x2'];
$y2 = $_GET['y2'];
$inputImage = $_GET['inputImage'];
$outputImage = 'output_'.$_GET['inputImage'];

exec( "convert {$inputImage} \( +clone -scale 20%  -scale 500% \) \
      \( +clone -gamma 0 -fill white \
      -draw 'rectangle {$x1},{$y1} {$x2},{$y2}' -blur  10x4 \) \
      -composite  {$outputImage}" );

echo $outputImage;
?>

Это работает, но пикселирует все изображение, а не только выбранную часть. Любые идеи или предложения приветствуются. Кто-нибудь был в состоянии сделать что-то подобное?

1 Ответ

1 голос
/ 18 ноября 2010

Что вам нужно сделать, это разделить изображение на две переменные, дублируя его. Затем вы обрезаете одно изображение вокруг нужного места. Сделайте пиксель вверх, а затем снова поместите его на другое изображение в том же месте, где оно было.

Затем выведите его.

У вас будет фрагмент изображения с размытостью, а остальные будут чистыми.

...