Как преобразовать изображение PNG в массив? - PullRequest
0 голосов
/ 19 декабря 2011

Я пытаюсь создать игру AS3 на основе плиток, которая использует изображения PNG в качестве базы для карт, загружает их из библиотеки и преобразует данные в массив, где каждый пиксель данных является отдельной плиткой. По сути, если бы у меня был PNG размером 128x128 пикселей с, скажем, зелеными пикселями, преобразованными в «GRASS» в моем массиве, я мог бы затем циклически перемещаться по массиву и соответственно добавлять плитки в мувиклип карты.

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

1 Ответ

3 голосов
/ 19 декабря 2011

Класс BitmapData выглядит как то, что вы ищете. Убедитесь, что у изображений в вашей библиотеке есть собственное имя класса, и что его базовый класс - Bitmap (в свойствах), затем создайте экземпляр изображения и переберите данные его растровых пикселей, используя getPixel .

Примерно так:

var image:Bitmap = new MyBMP();
var bmd:BitmapData = image.bitmapData;

for(var y:int=0; y < bmd.height; ++y)
{
    for(var x:int=0; x < bmd.width; ++x)
    {
        var pixelValue:uint = bmd.getPixel(x, y);
        trace(pixelValue.toString(16));
        // Test if the pixelValue matches the colour you want.
    }           
}

Только примечание, обязательно используйте getPixel32 , если вы используете альфа-канал.

...