Как прочитать пиксели изображения& #39; значения как RGB в массив 2d?

делал редактор 2D-карт для своей игры-платформера с квадратными плитками, когда понял, что действительно могу использовать редактор изображений с его возможностями перекрашивать соседние пиксели и многое другое, поэтому я решил, что должен попытаться прочитать нарисованный уровень приложением, которое будет затем конвертируйте его в облегченный формат.

Я не уверен, что использование растрового формата является обязательным для таких вещей, но я думаю, что чтение определенного пикселя будет проще, чем, например, с PNG.

Итак, моя цель — открыть изображение, перебрать каждый пиксель,ищите те, цвета которых соответствуют моей схеме плитки, и помещайте соответствующую плитку в массив блоков.

Примечание. :У меня уже есть облегченный формат, поэтому мне нужно только считывать значения пикселей в массив.


Решение:Мой эскиз выглядит так:
Bitmap myBitmap = new Bitmap(@"input.png");            
            for (int x = 0; x < myBitmap.Width; x++)
            {
                for (int y = 0; y < myBitmap.Height; y++)
                {                    
                    Color pixelColor = myBitmap.GetPixel(x, y);
                    // things we do with pixelColor
                }
            }


Пример 2:
Bitmap myBitmap = new Bitmap(@"input.png");

            for (int x = 0; x < myBitmap.Width; x++)
            {
                for (int y = 0; y < myBitmap.Height; y++)
                {
                    // Get the color of a pixel within myBitmap.
                    Color pixelColor = myBitmap.GetPixel(x, y);
                    string pixelColorStringValue =
                        pixelColor.R.ToString("D3") + " " +
                        pixelColor.G.ToString("D3") + " " +
                        pixelColor.B.ToString("D3") + ", ";

                    switch (pixelColorStringValue)
                    {
                        case "255 255 255":
                            {
                                // white pixel
                                break;
                            }
                        case "000 000 000":
                            {
                                // black pixel
                                break;
                            }
                    }
                }
            }
21
задан user1306322 12 April 2012 в 17:26
поделиться