Вывод изображения - C# (185862)
Формулировка задачи:
Здравствуйте. Передо мной стоит следующая задача - необходимо выделить R, G, B компоненты изображения, а затем графически интерпретировать их.
Насколько я понимаю, для начала нужно создать массивы для каждой цветовой компоненты, а после вывести их в виде трех картинок, каждая из которых будет характеризовать интенсивность одного из трех цветов (красного, зеленого или синего) в каждом пикселе исходного изображения.
Собственно, RGB составляющие я выделил, но как их визуализировать? Ниже представлена часть кода, в которой я пытался выполнить эту задачу для записи хотя бы одной цветовой компоненты.
Но в итоге изображение получается пустым, поскольку при сохранении я не использовал ни один из массивов цветовых компонент. Отсюда вопрос - как использовать эти массивы? В какую часть кода их вставлять?
На С# работаю буквально пару дней, поэтому и испытываю такие трудности. Надеюсь на вашу помощь)
private void buttonEncode_Click(object sender, EventArgs e)
{
Bitmap img = new Bitmap(textBoxFilePath.Text);
int[,] arrayR = new int[img.Width, img.Height];
int[,] arrayG = new int[img.Width, img.Height];
int[,] arrayB = new int[img.Width, img.Height];
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Save an Image File";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();
for (int i = 0; i < img.Width; i++)
{
for (int j = 0; j < img.Height; j++)
{
Color pixel = img.GetPixel(i, j);
if (i < 1 && j < 10)
{
arrayR[i, j] = pixel.R;
arrayG[i, j] = pixel.G;
arrayB[i, j] = pixel.B;
Console.WriteLine("R[" + i + "][" + j + "] = " + arrayR[i, j]);
Console.WriteLine("G[" + i + "][" + j + "] = " + arrayG[i, j]);
Console.WriteLine("B[" + i + "][" + j + "] = " + arrayB[i, j]);
switch (saveFileDialog1.FilterIndex)
{
case 1:
this.buttonEncode.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case 2:
this.buttonEncode.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Bmp);
break;
case 3:
this.buttonEncode.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Gif);
break;
}
fs.Close();
}
}
}
}
}Решение задачи: «Вывод изображения»
textual
Листинг программы
wr.SetPixel(p, c.R * kRed, c.G * kGreen, c.B * kBlue);