我有使用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?
问候,
答案 0 :(得分:1)
如果您可以将/ bin文件夹中的文件解压缩为流或字节数组(然后将其封装在流中),您可以调用相应的Bitmap constructor并简单地将此位图分配给image属性PictureBox。