C# - XFL内容:将.dat文件转换为位图

时间:2015-06-23 11:59:18

标签: c# flash fla xfl

我有使用XFL格式的.fla文件。 在里面有一个带有一些.dat文件的/ bin文件夹,这些文件是图像。

有没有办法将这些.dat文件转换为位图并在PictureBox控件中显示它们?

这是一个dat文件的示例:link

相应的图片(从Flash导出)link

更新: 在我的代码下面:

string scenePath = "Path to .fla file";
ZipFile zip = new ZipFile(scenePath);
MemoryStream ms = new MemoryStream();

foreach (ZipEntry entry in zip)
{
    if (entry.FileName.Contains(objName))
    {
        entry.Extract(ms);

        //TODO: Need to convert the content of MemoryStream to image type!

        Bitmap bmp = new Bitmap(ms);
        pictureBoxObjView.Image = bmp;
    }
}

UPDATE2: 我发现了一篇描述类似问题的帖子XFL - What are the ./bin/*.dat files?。 在答案中我发现了这个:

  

其中解压缩的数据是具有存储类型的像素:ARGB,因此使用大小信息它应该足以从中获取图像。它正在使用ZLIB压缩(www.zlib.net)Flash使用的是压缩级别1,但它可以使用任何级别(但由于源通常是完全压缩的,所以没有必要。

但我仍然不知道如何将.dat文件转换为位图!!

我尝试手动解压缩.fla并将.dat文件重命名为ext(.jpg,.png,.bmp)来检查它是否是普通的图像文件,但是当我收到错误“格式错误”时试着打开它。

我的问题是如何将MemoryStream的内容转换为Bitmap?

问候,

1 个答案:

答案 0 :(得分:1)

如果您可以将/ bin文件夹中的文件解压缩为流或字节数组(然后将其封装在流中),您可以调用相应的Bitmap constructor并简单地将此位图分配给image属性PictureBox。