我需要使用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做到这一点?
有没有简单的方法可以达到相同的结果?
答案 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:
我像这样对它进行像素化:
gm convert source.tif -resize 8x -scale 400x pixellated.tif
然后我像这样制作一个蒙版-我人为地添加了红色轮廓,以便您可以在StackOverflow的白色背景上看到该范围:
gm convert -size 400x400 xc:white -fill black -draw "circle 200,200 200,400" mask.tif
并进行如下最终合成:
gm composite source.tif pixellated.tif mask.tif result.tif
顺便说一句,有关{strong> GraphicsMagick 与 ImageMagick 的一些想法,请参见here。