我需要使用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));
}
}
这基本上用$ pixel像素的正方形替换所选区域。我想完成某种模糊(高斯优选)效果,我知道我可以使用ImageFilter()函数:
ImageFilter($image, IMG_FILTER_GAUSSIAN_BLUR);
但是它模糊了整个画布,我的问题是我只是想模糊一个特定的区域。
答案 0 :(得分:12)
您可以将图像的特定部分复制到新图像中,在新图像上应用模糊并将结果复制回来。
有点像这样:
$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);
答案 1 :(得分:2)
我没有检查imagefilter的文档,我不知道这是不可能的,或者是否有相当于将其应用于图像的(部分)。但假设没有,为什么不呢: