C # Удалить цвет с помощью графики - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу удалить все цвета из WMF файла изображения только одним цветом.

Metafile img = new Metafile(path + strFilename + ".wmf");
float planScale = 0.06615f;
float scale = 1200f / (float)img.Width;
planScale = planScale / scale; ;
float widht = img.Width * scale;
float height = img.Height * scale;
using (var target = new Bitmap((int)widht, (int)height))
{
    using (var g = Graphics.FromImage(target))
    {
        g.DrawImage(img, 0, 0, (int)widht, (int)height);
        target.Save("image.png", ImageFormat.Png);
    }
}

На данный момент я загружаю файл WMF, устанавливаю масштаб и сохраняю его как файл PNG.

Пример результата PNG: enter image description here

Но теперь мне нужно удалить все цвета (зеленый, фиолетовый ....) и установить только 1 цвет, например, серый.

1 Ответ

0 голосов
/ 10 сентября 2018

Если фон всегда белый, вы можете сделать что-то подобное. Вы можете изменить 200 на то, что вы хотите, чтобы настроить цвет, который не должен быть изменен. В этом примере белый цвет не изменяется. Если вы не хотите рисовать черным, вы можете настроить Цвет на target.SetPixel(x,y,Color.Black);

Metafile img = new Metafile("D:\\Chrysanthemum.wmf");
float planScale = 0.06615f;
float scale = 1200f / (float)img.Width;
planScale = planScale / scale; ;
float widht = img.Width * scale;
float height = img.Height * scale;
using (var target = new Bitmap((int)widht, (int)height))
{
    using (var g = Graphics.FromImage(target))
    {
        g.DrawImage(img, 0, 0, (int)widht, (int)height);
    }

    for (int x = 0; x < target.Width; x++)
    {
        for (int y = 0; y < target.Height; y++)
        {
            Color white = target.GetPixel(x, y);
            if ((int)white.R > 200 || (int)white.G > 200 || (int)white.B > 200)
            {
                target.SetPixel(x, y, Color.Black);
            }
        }
    }

target.Save("D:\\image.png", ImageFormat.Png);
}

WMF изображение: enter image description here

PNG фото: enter image description here

Надеюсь, это то, что вы ищете.

...