Вывод изображения - 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);

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


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

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

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