仅模糊图像的一部分

Blur part of an image only

我只想模糊图像的一部分。模糊的部分总是矩形的,所以我可以很容易地使用下面的命令:

magick source.jpg -region 1000x1000+0+500 -blur 0x20 result.jpg

这可行,但对于大图像来说速度很慢。由于我必须一次又一次地处理数千个文件,这将花费太长时间。

因此,我决定通过将图像缩小和放大到原始大小来进行模糊处理。但是,由于这会使 完整 图像模糊,我已尝试使用以下步骤完成任务:

  1. 以原图为背景
  2. 创建原始图像的副本
  3. 使用down-/upscaling
  4. 模糊副本
  5. 从模糊副本中裁剪出所需区域
  6. 合成原件和模糊裁剪后的副本

我已经很接近了(我希望如此),但是在合成两个图像时,裁剪后的图像将始终位于原始图像的左上角 - 而不是源图像的原始位置。这是我当前的命令:

magick source.jpg ( -clone 0 -resize 5% -resize 2000% -crop 1000x1000+0+1000 ) -composite result.jpg

我看过in the documentation,使用-crop操作时会保留原来的canvas大小,使用[=13=时会使用这个大小和位置].但是,这似乎不适用于我的情况。有人知道为什么吗?

我尝试过使用-repage-extent等选项来定义裁剪图片的大小和位置,但至今无济于事。

您可以在 ImageMagick 中使用蒙版图像(任何形状)来完成。虽然我不确定这是否会比您的缩放方法更快。

输入:

掩码:

(注意:模糊发生在蒙版为黑色的地方)

magick lena.jpg -write-mask mask.png -blur 0x3 +write-mask lena_blurred.png

结果:

我会在您的命令中尝试 -flatten,因为它用于图层。