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

はその赤い色の部分を透明にしますが、色を引数として上記のメソッドに渡す必要があります。最初は、色の値を赤にしてみました。だからうまくいかない。今のように画像から1ピクセルを読んでいます

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")

newimage.display

于 2020-06-11T16:28:30.590 に答える