答えて
、これはRGB <が必要です 2.ターゲット色のHSL値
3.取得の画像ピクセルを取得し、各画素について:
4ピクセルのHSL値を計算し、(pixelHsl/refHsl)* targetHsl
と交換しますこれは助けてくれたすべての人に感謝してくれた。
はこれを試して結果の良い例を見ることができます:
Color color = Color.Black; //Your desired colour
byte r = color.R; //For Red colour
Bitmap bmp = new Bitmap(this.BackgroundImage);
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
Color gotColor = bmp.GetPixel(x, y);
gotColor = Color.FromArgb(r, gotColor.G, gotColor.B);
bmp.SetPixel(x, y, gotColor);
}
}
'GetPixel'が非常に遅い、以下を参照してくださいhttp://stackoverflow.com/questions/4235731/is-there-a-faster-alternative-to-gdi-getpixel –
はい非常に高速だがためではありません小さな画像の色は非常に効果的です。 –
イメージの色を変更する際の1つの問題は、選択的ではないことです。つまり、ある部分で黒から赤に変えたい画像では不可能です。たとえば、人物の画像で、髪の色を赤に変えたい場合、それは不可能です。画像内のどこに表示されても、すべての黒のピクセルが赤に置き換えられます。 –
は、アルに、画素を読み出して3列の(RGB)でそれらを詰め込むようにしてくださいそこにあなたができますあなたの色を置き換えるために括弧で設定します。あなたが
を交換したい色を表す(HSL色の良いクラスがhere見つけることができます)
1(HSL)で基準値を取得します> HSLの変換 - それをする方法を見つけ
効率的に色を置き換える1つの方法は、再マップテーブルを使用することです。次の例では、イメージボックス内にイメージが描画されます。 Paintイベントでは、カラーColor.BlackがColor.Blueに変更されます。
private void pictureBox_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
using (Bitmap bmp = new Bitmap("myImage.png"))
{
// Set the image attribute's color mappings
ColorMap[] colorMap = new ColorMap[1];
colorMap[0] = new ColorMap();
colorMap[0].OldColor = Color.Black;
colorMap[0].NewColor = Color.Blue;
ImageAttributes attr = new ImageAttributes();
attr.SetRemapTable(colorMap);
// Draw using the color map
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
g.DrawImage(bmp, rect, 0, 0, rect.Width, rect.Height, GraphicsUnit.Pixel, attr);
}
}
詳細情報:http://msdn.microsoft.com/en-us/library/4b4dc1kz%28v=vs.110%29.aspx
研究を行っている時に、私はこれを行うのない効率的/ smoothe方法を見つけていないので、私はそれをいけません私は、コードはきれいになるかもしれませんが、それは効率的ではありませんが、よりスムーズであり、あなたは公差を設定することができます。
public static Image ColorReplace(this Image inputImage, int tolerance, Color oldColor, Color NewColor)
{
Bitmap outputImage = new Bitmap(inputImage.Width, inputImage.Height);
Graphics G = Graphics.FromImage(outputImage);
G.DrawImage(inputImage, 0, 0);
for (Int32 y = 0; y < outputImage.Height; y++)
for (Int32 x = 0; x < outputImage.Width; x++)
{
Color PixelColor = outputImage.GetPixel(x, y);
if (PixelColor.R > oldColor.R - tolerance && PixelColor.R < oldColor.R + tolerance && PixelColor.G > oldColor.G - tolerance && PixelColor.G < oldColor.G + tolerance && PixelColor.B > oldColor.B - tolerance && PixelColor.B < oldColor.B + tolerance)
{
int RColorDiff = oldColor.R - PixelColor.R;
int GColorDiff = oldColor.G - PixelColor.G;
int BColorDiff = oldColor.B - PixelColor.B;
if (PixelColor.R > oldColor.R) RColorDiff = NewColor.R + RColorDiff;
else RColorDiff = NewColor.R - RColorDiff;
if (RColorDiff > 255) RColorDiff = 255;
if (RColorDiff < 0) RColorDiff = 0;
if (PixelColor.G > oldColor.G) GColorDiff = NewColor.G + GColorDiff;
else GColorDiff = NewColor.G - GColorDiff;
if (GColorDiff > 255) GColorDiff = 255;
if (GColorDiff < 0) GColorDiff = 0;
if (PixelColor.B > oldColor.B) BColorDiff = NewColor.B + BColorDiff;
else BColorDiff = NewColor.B - BColorDiff;
if (BColorDiff > 255) BColorDiff = 255;
if (BColorDiff < 0) BColorDiff = 0;
outputImage.SetPixel(x, y, Color.FromArgb(RColorDiff, GColorDiff, BColorDiff));
}
}
return outputImage;
}
- 1. イメージ内の色をサンプルする方法
- 2. イメージ内のイメージを検索するC#
- 3. イメージ内の単一の色を分離する方法
- 4. イメージ内で単一の色、水平スペースを検索します。
- 5. イメージ内のオブジェクトを色で選択しますか?
- 6. イメージとCSSの色が8色です。
- 7. イメージ内の色の異なる色合いを1つの色に変換する
- 8. javafxイメージの色の変更
- 9. 銀色の表示イメージ4
- 10. WPFイメージの反転色
- 11. iPhone SDKの着色イメージ
- 12. qwebviewの背景イメージ、色、フォントの色を変更するには
- 13. イメージの色と背景の色を逆にする
- 14. イメージ内の2つの色のエッジで色の変化の効果を取り除く
- 15. イメージの色をリアルタイムで交換する
- 16. イメージをポリゴンの色として設定
- 17. イメージ内のテキスト
- 18. リテラルブロック内のイメージ
- 19. データベース内のイメージをc#(UPDATEを使用)に置き換える
- 20. C#を使用してオートシェイプ内のWordイメージを編集する
- 21. Firebase Storge(Objective-C)のフォルダ内の全イメージをダウンロードする方法
- 22. イメージを色づけする/色を表示する方法は?
- 23. イメージの色の認識、一般的な色
- 24. db内のC#取得イメージ。無効なエラーパラメータを取得する
- 25. C#トレイ内の動的にnotifyiconイメージを変更する
- 26. wpfのベースディレクトリ(アプリケーションディレクトリ)内でイメージ名を取得する方法C#
- 27. C#asp.net web applicationサーバソースディレクトリ内のイメージを置換する
- 28. Pictureboxイメージ内のゾーンを定義します - ツールチップC#
- 29. イメージに色をつける方法
- 30. アンドロイドで色をイメージに書き込む
はい、魅力的です。なぜコメントすることができますか? –
あなたはそれを置き換えるために使用したコードは何ですか? –
あなたのコードはどこですか –