【问题标题】:Blur part of an image only仅模糊图像的一部分
【发布时间】:2021-11-24 11:40:51
【问题描述】:

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

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

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

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

  1. 以原图为背景
  2. 创建原始图像的副本
  3. 使用缩小/放大对副本进行模糊处理
  4. 从模糊副本中裁剪所需区域
  5. 合成原件和模糊和裁剪的副本

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

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

我已阅读in the documentation,在使用-crop 操作时将保留原始画布大小,并且在使用-composite 时将使用此大小和位置。但是,这在我的情况下似乎不起作用。有人知道为什么吗?

我曾尝试使用-repage-extent 和其他选项来定义裁剪图像的大小和位置,但目前无济于事。

【问题讨论】:

  • 你试过-flatten吗?
  • @Bonzo 非常感谢,成功了!在-composite 之前添加-flatten 使裁剪的部分出现在正确的位置。如果您将此添加为答案,我会接受。

标签: imagemagick


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    输入:

    面具:

    (注意:在遮罩为黑色的地方会出现模糊)

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

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多