使用图像遮罩对像素进行像素化/模糊处理

时间:2019-08-19 12:04:15

标签: mask blur graphicsmagick pixelate

我需要使用tif格式的蒙版图像对图像的一部分像素化。

在ImageMagick中,有多个选项可以做到这一点,例如:

Post.query.filter(Post.post_id==int(post_id)).update(dict(
        title=form.title.data, body=form.body.data))

源图像和unsharp_mask图像具有相同的尺寸:3840 x 2160

在源图像中,unsharp_mask图像填充为黑色,除了需要像素化的区域(白色)。

如何使用GraphicsMagick做到这一点?

有没有简单的方法可以达到相同的结果?

1 个答案:

答案 0 :(得分:2)

更新后的答案

好吧……花了一些时间“在周围闲逛” ,呃,我的意思是认真研究这些选项,我想出了这点,它不仅速度更快,而且不需要任何中间文件:

cat - <<EOF | gm batch -prompt off
convert source.tif -resize 8x -scale 400x MPR:pixellated
convert -size 400x400 xc:white  -fill black  -draw "circle 200,200 200,400" MPR:mask
composite source.tif MPR:pixellated MPR:mask result.tif
EOF

它产生与以下相同的结果。如果有人感兴趣, MPR 表示“内存程序寄存器” ,它基本上是带有名称的RAM块。

原始答案

也许有一种更简单的方法,您可以花很多年时间来解决,但这似乎可以满足我的要求。

这是我的源图像source.tif,它是400x400px:

enter image description here

我像这样对它进行像素化:

gm convert source.tif -resize 8x -scale 400x pixellated.tif

enter image description here

然后我像这样制作一个蒙版-我人为地添加了红色轮廓,以便您可以在StackOverflow的白色背景上看到该范围:

gm convert -size 400x400 xc:white  -fill black  -draw "circle 200,200 200,400" mask.tif

enter image description here

并进行如下最终合成:

gm composite source.tif pixellated.tif mask.tif result.tif

enter image description here

顺便说一句,有关{strong> GraphicsMagick 与 ImageMagick 的一些想法,请参见here