Замена цвета в bmp - C#

Узнай цену своей работы

Формулировка задачи:

Как заменить определенный цвет в *.bmp файле? пробовал так...
Bitmap myBitmap = new Bitmap("img.bmp");
          
            for (int Xcount = 0; Xcount < myBitmap.Width; Xcount++)
            {
                for (int Ycount = 0; Ycount < myBitmap.Height; Ycount++)
                {
                    myBitmap.SetPixel(Xcount, Ycount, Color.Black);
                }
            }
...здесь он должен менять все на черный цвет выдает ошибку...
SetPixel не поддерживается для изображений, имеющих форматы с индексированными точками.
Вроде как разобрался, bmp является палитрой с индексированными цветами.
Bitmap myBitmap = new Bitmap("img.bmp");
            System.Drawing.Imaging.ColorPalette cp = myBitmap.Palette;
            for (int i = 0; i < cp.Entries.Length; i++)
            {
                
                if (cp.Entries[i].Name == "ffff00ff")
                {
                    cp.Entries.SetValue(Color.White, i);
                }

            }
            myBitmap.Palette = cp;
            myBitmap.Save("newimg.bmp");
вот только другой вопрос, если условие так поставить....
if (cp.Entries[i].Name == "ffff00ff")
...то все нормально изменяется, а если так...(Color.Magenta == #FFFF00FF)
if (cp.Entries[i] == Color.Magenta)
то не изменяется...(т.е. условие не срабатывает)

Решение задачи: «Замена цвета в bmp»

textual
Листинг программы
Bitmap bitmap = new Bitmap("img.bmp");
 
            GraphicsUnit gu = new GraphicsUnit();
 
            int width = Convert.ToInt32(bitmap.GetBounds(ref gu).Width);
            int height = Convert.ToInt32(bitmap.GetBounds(ref gu).Height);
 
            for (int Xcount = 0; Xcount < width; Xcount++)
            {
                for (int Ycount = 0; Ycount < height; Ycount++)
                {
                    Color c = bitmap.GetPixel(Xcount, Ycount);
                    if (c == Color.White)
                        bitmap.SetPixel(Xcount, Ycount, Color.Black);
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы