0

这是路径“M276,189h268c5.5,0,10,4.5,10,10v196c0,5.5-4.5,10-10,10H276 c-5.5,0-10-4.5-10-10V199C266,193.5,270.5,189,276,189z "

这是输入图像:

输入图像

使用以下代码将路径应用于图像后

draw = Magick::Draw.new
draw.fill 'red'
draw.path path
draw.clip_rule("evenodd")
draw.fill_rule("evenodd")
draw.fill_opacity(0)
draw.draw image
img.trim!
img.write('output.jpg')

这是输出图像:

输出图像

现在我想剪切图像的红色部分。这意味着期望棕色部分仅可见。我使用了正常的图像级裁剪方法。有了这个我只能提取红色部分但我想从输出图像中提取红色以外的图像。

这是黑色图像的 样本输出黑色的样本输出

也许我们必须反向剪辑或反向裁剪才能得到这个......

4

1 回答 1

0

方法

img.paint_transparent

将使红色部分透明,但我们必须将颜色作为参数传递给上述方法。最初,我尝试将颜色值设为红色。所以它不起作用。现在正在从图像中读取一个像素,例如

redPixel= img.get_pixels(300, 200, 1, 1)[0]

并从类似像素的 redPixel.to_color 获取颜色并将值传递给上述方法......

我们必须为图像设置模糊值

img = Magick::Image.read("diecut.jpg").first

redPixel= img.get_pixels(300, 200, 1, 1)[0]

img.fuzz = '25%'

把 redPixel.to_color

newimage=img.paint_transparent(redPixel.to_color)

newimage.write("outPut.png")

新图像显示

于 2020-06-11T16:28:30.590 回答