使用纯Flash保存图像?

时间:2014-11-04 07:36:51

标签: actionscript-3 flash bitmap

非常简单:如何仅使用纯Flash保存图像?

<小时/> 示例代码:

var bitmap: BitmapData = new BitmapData(100, 100, true, 0);
bitmap.draw(this);
var data: ByteArray = bitmap.getPixels(bitmap.rect);
var f: FileReference = new FileReference();
f.save(data, "test.bmp");

这为我节省了40,000字节(4 * 100 * 100)的文件。我用十六进制编辑器检查了它,我的位图/精灵的像素。现在我不关心这是什么图像类型。我只是希望它以我可以使用常见图像编辑器显示的格式保存。我不想安装额外的东西。我可以只使用Flash,没有AIR,没有JPGEncoder,没有额外的东西吗?

(此功能不允许客户使用。)

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。 首先,您需要确保您的目标是至少版本为11.3的Flash Player,并且编译至少版本为18的SWF(或至少18个为我工作)。

BitmapData类有自己的方法encode,它将为您处理JPEG或PNG的编码工作。以下是如何做到这一点:

var bitmap:BitmapData = new BitmapData(100,100,true,0);
bitmap.draw(this);
var data:ByteArray = new ByteArray();
var o:PNGEncoderOptions = new PNGEncoderOptions();
bitmap.encode(bitmap.rect, o, data);
var f:FileReference= new FileReference();
f.save(data, "test.png");

encode的第三个参数是输出Bytearray,其中编码的Bytearray将被保存。

AS3 Documentation

答案 1 :(得分:0)

您仍然可以使用PNGEncoder或JPGEncoder,仍然是&#34;纯闪存&#34;。如果您错过了库,则可以在as3corelib swc library中获取它们(和其他人)。只需将swc包含在库路径中即可。

如果由于某种原因它不够纯粹,我想你总是可以进入库的源代码并复制出特定的PNGEncoder或JPGEncoder类,并将其重新用于你的用途。