Сохранить 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 ответ:
Благодаря сообществу 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 не имеет доступа к файловой системе.