Замена цвета в 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);
}
}