2017-03-09 16 views
0

白色を緑色に置き換えようとしていますが、下のコードは色を変えません。Magick.Netで色を入れ替えることができません

コード:

private static MagickImage ChangeWhiteColor(MagickImage Image, Color TargetColor) 
{ 
    Image.Opaque(MagickColor.FromRgb((byte)255, (byte)255, (byte)255), 
     MagickColor.FromRgb(TargetColor.R, 
     TargetColor.G, 
     TargetColor.B)); 
    return Image; 
} 

UPD私は複合重力とオペレータを変更しようとしましたが、何も変わりません。

私は何をすべきですか?

+1

あなたの質問をもっと詳細にすることができますか?あなたが試したことと結果を含める。 –

+1

Magick.Netは分かりませんが、色が正確ではないので、特にファジーなJPEGがあるため、 'fuzz'パラメータを見つけて置き換える必要があります。あなたが求める結果を得るでしょう。 –

+0

赤(R = 255、G = 0、B = 0)の四角形を含むイメージでコードを試してみました。あなたは、ツアー画像で置き換えたい色が赤色の「完璧な」255,0,0であることを確かめますか? – Andrea

答えて

2

完全に白い色(R = 255、G = 255、B = 255、または好きな場合は#ffffff)を置き換える必要がある場合、コードは機能します。

白色に似ているが(正確には同じではない)色を置き換える場合は、ColorFuzzを使用して公差を導入することができます。あなたは次のようになり、あなたの方法に新しいfuzzパラメータを追加することができ、この達成するために

private static MagickImage ChangeWhiteColor(MagickImage Image, Color TargetColor, int fuzz) 
{ 
    Image.ColorFuzz = new Percentage(fuzz); 
    Image.Opaque(MagickColor.FromRgb((byte)255, (byte)255, (byte)255), 
     MagickColor.FromRgb(TargetColor.R, 
     TargetColor.G, 
     TargetColor.B)); 
    return Image; 
} 

は、例えば3つの白い四角形が含まれている次の画像を考えてみましょう。各図形の下で、私はRGB値を報告しました。

enter image description here

あなたの元のコードのみが置き換えられます:第二及び第三の白色と非常に類似している非常に軽い灰色が充填されている間に左の最初の矩形は、純粋な白色が充填されています左側の最初の白い四角(ファズのデフォルト値であるため0%):

enter image description here

fuzz=2で修飾されたコードの実行は、第一及び第二の白い四角形が、第三のない置き換えられます:

と変更されたコードを実行する

enter image description here

すべての3つの白い長方形置き換えます:あなたは交換する必要が色を一致させるためにfuzz値(パーセンテージ)を調整することができます

enter image description here

を。

ファズhereの詳細情報

関連する問題