非常简单:如何仅使用纯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,没有额外的东西吗?
(此功能不允许客户使用。)
答案 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将被保存。
答案 1 :(得分:0)
您仍然可以使用PNGEncoder或JPGEncoder,仍然是&#34;纯闪存&#34;。如果您错过了库,则可以在as3corelib swc library中获取它们(和其他人)。只需将swc包含在库路径中即可。
如果由于某种原因它不够纯粹,我想你总是可以进入库的源代码并复制出特定的PNGEncoder或JPGEncoder类,并将其重新用于你的用途。