Замена цвета в bmp - C#
Формулировка задачи:
Как заменить определенный цвет в *.bmp файле?
пробовал так...
...здесь он должен менять все на черный цвет
выдает ошибку...
вот только другой вопрос, если условие так поставить.......то все нормально изменяется, а если так...(Color.Magenta == #FFFF00FF)
то не изменяется...(т.е. условие не срабатывает)
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")
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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д