0

我有一个 2D 整数数组,范围从 0 到 255,每个代表一个灰色阴影。我需要把它变成灰度图像。图像的宽度和高度分别是数组的列数和行数。

截至 2013 年 2 月,我正在使用带有最新(我认为).NET 框架的 Microsoft Visual C# 2010 Express。

许多其他人都遇到过这个问题,但发布的解决方案都没有对我有用;他们似乎都调用了我的代码中不存在的方法。我想我可能会错过 using 语句或其他内容。

顺便说一句,我对编程很陌生,所以请尽可能解释一切。

提前致谢。

编辑:好的,这就是我所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int width;
            int height;
            int[,] pixels;
            Random randomizer = new Random();

            Start:
            Console.WriteLine("Width of image?");
            string inputWidth = Console.ReadLine();
            Console.WriteLine("Height of image?");
            string inputHeight = Console.ReadLine();

            try
            {
                width = Convert.ToInt32(inputWidth);
                height = Convert.ToInt32(inputHeight);
            }
            catch (FormatException e)
            {
                Console.WriteLine("Not a number. Try again.");
                goto Start;
            }
            catch (OverflowException e)
            {
                Console.WriteLine("Number is too big. Try again.");
                goto Start;
            }

            pixels = new int[width, height];

            for (int i = 0; i < width; ++i)
                for (int j = 0; j < height; ++j)
                pixels[i, j] = randomizer.Next(256);



            Console.ReadKey();
        }
    }
}

所以这是我正在尝试做的一些伪代码:

Initialize some variables

Prompt user for preferred width and height of the resulting image.

Convert input into Int.

Set up the array to be the right size.

Temporary loop to fill the array with random values. (this will be replaced with a series of equations when I can figure out how to write to a PNG or BMP.

//This is where I would then convert the array into an image file.

Wait for further input.

其他似乎帮助其他人使用称为位图的类或对象的解决方案,但我似乎没有那个类,也不知道它在哪个库中。

4

1 回答 1

0

以与从 RGB 字节创建图像相同的方式创建它,灰度的唯一区别是 RGB 将是相同的值以获得灰色:

int width = 255; // read from file
int height = 255; // read from file
var bitmap = new Bitmap(width, height, PixelFormat.Canonical);

for (int y = 0; y < height; y++)
   for (int x = 0; x < width; x++)
   {
      int red = 2DGreyScaleArray[x][y]; // read from array
      int green = 2DGreyScaleArray[x][y]; // read from array
      int blue = 2DGreyScaleArray[x][y]; // read from array
      bitmap.SetPixel(x, y, Color.FromArgb(0, red, green, blue));
   }
于 2013-02-19T05:25:45.733 回答