gpt4 book ai didi

image - AS3/AIR/Mobile - 将位图保存到文件

转载 作者:行者123 更新时间:2023-12-04 21:48:09 25 4
gpt4 key购买 nike

我认真地到处寻找,但找不到解决方案。
我的应用程序可以轻松地将 UTF 字节保存为 iOS 和 Android 允许的缓存位置中的 XML 文件。

但我不知道如何将 Bitmap/BitmapData 保存到同一缓存文件夹中的文件中。
创建文件很好......

_fs.open(_f, FileMode.WRITE);

//What goes in here to save the Bitmap?

_fs.close();

对此的任何帮助将不胜感激。

谢谢

更新:代码如下...
        _smallLogo = Bitmap(_loader.content);
//this.addChild(_smallLogo);

var jpg:JPGEncoder = new JPGEncoder(100);
var bd:BitmapData = new BitmapData(_smallLogo.width, _smallLogo.height);
bd.draw(_smallLogo);
var ba:ByteArray = jpg.encode(bd);

//3
_fs.open(_f, FileMode.WRITE);
_fs.writeBytes( ba, 0, ba.length );
_fs.close();

更新 - 回答
//SAVE
_smallLogo = Bitmap(_loader.content);
var jpg:JPGEncoder = new JPGEncoder(100);
var ba:ByteArray = jpg.encode(_smallLogo.bitmapData);

_fs.open(_f, FileMode.WRITE);
_fs.writeBytes( ba, 0, ba.length );
_fs.close();
//OPEN
private function getLogo():void {
var ba:ByteArray = new ByteArray();

_fs.open(_f, FileMode.READ);
_fs.readBytes(ba);
_fs.close();

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData);
loader.loadBytes(ba);
}

private function getBitmapData(e:Event):void {
var decodedBitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var newBMP:Bitmap = new Bitmap();
newBMP.bitmapData = decodedBitmapData;

this.addChild(newBMP);
}

最佳答案

如果您正在写入设备缓存并且更关心速度而不是文件大小,您可以考虑使用:

bd.encode(bd.rect, new PNGEncoderOptions(true), ba);

请注意,如果没有 fastCompression = true,png 编码器比 jpeg 编码器慢

有关 as3 png 编码性能的更多信息 here

如果您首先需要速度(对于编码和解码),您可以以原始格式编写位图数据,如果您已经知道大小,则不使用标题,或者如果您想嵌入图像大小并允许更轻松地查看,则使用像 bmp 这样的基本标题你的缓存

顺便说一句,我不确定为什么您首先需要重新编码位图:
似乎位图已经来自加载程序,所以 _loader.contentLoaderInfo.bytes应该已经为您提供了刚加载的文件的 ByteArray,它应该已经编码,并且将避免对可能已经压缩的文件进行有损压缩。

关于image - AS3/AIR/Mobile - 将位图保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com