2014-03-25 73 views
3

我试图将生成的图形保存为PNG文件,但是我实际上将数据保存为文件。将BitmapData/ByteArray保存为PNG文件

我的步骤如下:

  • 制作一个图形对象
  • 通过draw()方法
  • 编码BitmapData对象将图形转换为BitmapData获得通过编码方法的ByteArray。
  • 使用格式库(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图像。

回答

4

得益于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(); 

的test.png文件会出现在包装上的应用程序,例如,如果您编译对于mac:lime test mac您需要右键单击您创建的.app,选择Show Package Contents,进入Contents> Resources,test.png将会在那里。

请注意,由于Flash Player无法访问文件系统,因此定位闪光灯将无法使用。