2014-01-08 2 views
0

У меня есть растровое изображение, которое я хотел бы преобразовать в оттенки серого, но используя красный вместо черного в качестве основы для серого.Конвертировать изображение в оттенки серого

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format16bppGrayScale); 

Как я могу это достичь?

+0

Какую часть вы возникли проблемы с? Включение вектора RGB в скалярное значение или получение скалярного значения и его отображение на канал «R» растрового изображения? Первая часть, вероятно, сложная часть - http://en.wikipedia.org/wiki/Grayscale должна помочь –

ответ

1

Кажется, что вы хотите применить фильтр и извлечь красный компонент из изображения.

Что вы хотите сделать, в основном, это отменить компоненты зеленого и синего данного пикселя и захватить только красный компонент.

Я нашел небольшой фрагмент кода, который делает именно это. Проверьте следующую ссылку:

http://www.codeproject.com/Articles/1989/Image-Processing-for-Dummies-with-C-and-GDI-Part-1

Проверьте сессию о цветных светофильтров. Вы можете загрузить исходный код и немного совать.

+0

То, что я действительно хочу сделать, - преобразовать каждый пиксель в красный с той же непрозрачностью – jimmyjambles

1

Это своего рода грубой силы подход, но он работает:

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), PixelFormat.Format24bppRgb); 
int width = bitmap.Width; 
int height = bitmap.Height; 
for (int w = 0; w < width; w++) 
{ 
    for (int h = 0; h < height; h++) 
    { 
     formatted.SetPixel(w, h, Color.FromArgb(bitmap.GetPixel(w, h).A, bitmap.GetPixel(w, h).R, 0, 0)); 
    } 
} 
Смежные вопросы