Сохранить BitmapData/ByteArray в виде файла PNG


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

Мои шаги следующие:

  • сделать графические объекты
  • преобразование графики в BitmapData с помощью метода draw ()
  • Закодируйте объект BitmapData, чтобы получить ByteArray с помощью метода encode.
  • используя библиотеку форматов (hxformat), сохраните файл

Вот мой метод в Haxe:

function saveImage():Void
{
    var ba:ByteArray = image.encode("png");

    var bi:haxe.io.BytesInput = new haxe.io.BytesInput(ba);

    var data = new format.png.Reader(bi).read();

    var out = sys.io.File.write("testRead.png",true);
    new format.png.Writer(out).write(data);

}

Файл image является типом переменной класса из BitmapData.

Пожалуйста, скажите мне, что я делаю неправильно или как еще сохранить BitmapData в виде изображения PNG.

1 3

1 ответ:

Благодаря сообществу OpenFL я нашел способ сохранить BitmapData в виде изображений PNG, вот код:

// Creating a shape that we'll later save
var s:Sprite = new Sprite();
s.graphics.beginFill(0xFF0000, 1);
s.graphics.drawRect(0, 0, 110, 210);
s.graphics.endFill();

// Making a BitmapData from the Sprite
var image:BitmapData = new BitmapData( Std.int( s.width ), Std.int( s.height ), false, 0x00FF00);
image.draw(s);


// Saving the BitmapData
var b:ByteArray = image.encode("png", 1);
var fo:FileOutput = sys.io.File.write("test.png", true);
fo.writeString(b.toString());
fo.close();

Испытание.png-файл появится в пакете приложения, например, если вы компилируете для mac: lime test mac вам нужно будет щелкнуть правой кнопкой мыши .созданное приложение, выберите Показать содержимое пакета, перейдите в раздел содержимое>ресурсы и тест.png будет там.

Пожалуйста, помните, что таргетинг Flash не будет работать, потому что Flash Player не имеет доступа к файловой системе.