首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烟花PNG格式,有什么见解吗?有谎言吗?

烟花PNG格式,有什么见解吗?有谎言吗?
EN

Stack Overflow用户
提问于 2010-11-22 04:52:57
回答 2查看 2.6K关注 0票数 5

最终目标是将烟花png文件中的页面导出到单个图像中。所以我有几个问题:

  1. 你知道什么--库,应用程序--已经知道了吗?
  2. 你有任何关于格式的信息吗?我想,他们把信息存储在专门的块里。我只是希望这些块的有效载荷的格式不是那么难弄清楚。

我还没查过任何烟火档案。我没有发现任何关于格式的信息,所以这是下一步,但我想可能有人知道一点,并节省了我的时间:)。

我希望(可能不是这样),每个页面都以PNG的形式存储在单独的IDAT块中。但是,由于矢量功能,不太可能。也许他们将svg格式存储在块中?

任何帮助或讨论都将不胜感激。我打算在接下来的几天里深入研究这个问题。

编辑:这里有几件事:下面链接的超级用户帖子表示文件是APNG。烟花文件不是APNG。APNG包含动画块: acTL、fcTL、fdAT。烟花除了prVW,mkBF,mkTS,mkBS,mkBT块之外,没有其他的APNG块。

这里有一个关于烟花PNG的非常可靠的帖子:http://newsgroup.xnview.com/viewtopic.php?f=35&t=20592#p86243

因此,我想我需要知道这些块做什么,以及如何解析它们。

EN

回答 2

Stack Overflow用户

发布于 2018-08-04 06:56:49

我自己为文件中的私有块类型所做的一些挖掘如下(假设Python切片表示法):

prVW (“缩略图预览?”)

代码语言:javascript
复制
Data format:
- bytes[0:4]   - Chunk length
- bytes[4:8]   - Chunk type
- bytes[8:10]  - zlib file magic 0x789c
- bytes[10:-8] - zlib data
- bytes[-8:-4] - zlib checksum
- bytes[-4:]   - Chunk checksum

After decompressing, the first 4-bytes are the value "0xcafebeef",
likely another file magic byte value for whatever format the data is
in.

mkBF

代码语言:javascript
复制
Data format:
- bytes[0:4]   - Chunk length
- bytes[4:8]   - Chunk type
- bytes[8:12]  - 0xfadecafe (file magic?)
- bytes[12:16] - big-endian length value?
- bytes[16:80] - 64-byte NULL-padded data field
- bytes[80:84] - Chunk checksum

mkBS

代码语言:javascript
复制
Data format:
- bytes[0:4]   - Chunk length
- bytes[4:8]   - Chunk type
- bytes[8:10]  - zlib file magic 0x789c
- bytes[10:-8] - zlib data
- bytes[-8:-4] - zlib checksum
- bytes[-4:]   - Chunk checksum

mkBT

代码语言:javascript
复制
Data format:
- bytes[0:4]   - Chunk length
- bytes[4:8]   - Chunk type
- bytes[8:12]  - 0xfacecafe (file magic?)
- bytes[12:16] - Unknown big-endian value.  Increments for
                 each mkBT chunk present, and appears to only
                 consume the lower 24-bits.
- bytes[16:84] - 68-byte NULL-padded data field
- bytes[84:86] - zlib file magic 0x789c
- bytes[86:-8] - zlib data
- bytes[-8:-4] - zlib checksum
- bytes[-4:]   - Chunk checksum

This chunk may contain a split/spanned zlib stream, as the decompressed
data is cut at 64kb per mkBT chunk and does not appear to carry a zlib
checksum value.  Decompressing each zlib stream and then concatenating them
all together does not appear to be wrong.

mkTS

代码语言:javascript
复制
Data format:
- bytes[0:4]   - Chunk length
- bytes[4:8]   - Chunk type
- bytes[8:10]  - zlib file magic 0x789c
- bytes[10:-8] - zlib data
- bytes[-8:-4] - zlib checksum
- bytes[-4:]   - Chunk checksum
票数 3
EN

Stack Overflow用户

发布于 2010-11-22 11:17:22

有趣的问题。

如果您试图编写一个获取Fireworks (APNG)并保存页面的实用程序,不要有多大帮助,但如下所示:

您可以使用烟花中的导出菜单:文件>导出>页到文件

此外,您还可以使用另存为选项,并选择Photoshop PSD。此选项将页保留为Photoshop图层面板中的文件夹/组,但它会对矢量形状进行栅格化。不过,如果您想要解析PSD而不是APNG(用于访问图像和页面),这还是很方便的。

我编写了一个小脚本(主要使用文档),它将您当前打开的烟花PNG的PSD保存到您选择的文件夹中:

代码语言:javascript
复制
var doc = fw.getDocumentDOM();
var loc = fw.browseForFolderURL("select a folder to save pages");

var prevWarn = fw.getPref("PsdExport_Warn100"); // bool 
fw.setPref("PsdExport_Warn100", false);    // don't warn. 

var kObjToLayer = 1; 
var kFlatten = 2; 
var prevLayers = fw.getPref("PsdExport_Layers"); 
fw.setPref("PsdExport_Layers", kObjToLayer);    // flatten layers or not. 

var kEffectEditable = 1; 
var kEffectRender = 2; 
var prevEffects = fw.getPref("PsdExport_Effects"); 
fw.setPref("PsdExport_Effects", kEffectEditable); 

var kTextEditable = 1; 
var kTextRender = 2; 
var prevText = fw.getPref("PsdExport_Text"); 
fw.setPref("PsdExport_Text", kTextRender); 

if(loc) fw.exportPSD(doc, loc+"/yourPages.psd"); 

// Put the prefs back. 
fw.setPref("PsdExport_Warn100", prevWarn); 
fw.setPref("PsdExport_Layers", prevLayers); 
fw.setPref("PsdExport_Effects", prevEffects); 
fw.setPref("PsdExport_Text", prevText);

如果将此文件保存为.jsf文件,并在烟花中打开文档,则只需双击.jsf文件即可。

另外,注意到有一个可用的出口PSD扩展,它比这里的小脚本有更多的选项。

如果您需要矢量形状,您可以使用文件导出> FXG和图像,并选择All Pages以下的格式。FXG是一种xml格式,规格是可用的。

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4242402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档