烟花PNG格式,有什么见解?任何libs?

Ben*_*enO 5 png image-processing fireworks

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

  1. 你知道什么 - 图书馆,应用程序 - 已经这样做了吗?
  2. 你有关于格式的任何信息吗?我假设他们将信息存储在专门的块中.我只是希望那些块的有效载荷的格式不是那么难以理解.

我还没有挖过任何烟花文件.我没有找到关于格式的信息,所以这是下一步,但我想有人可能会知道一些并节省我一些时间:).

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

任何帮助或讨论表示赞赏.我打算在接下来的几天里深入研究这个问题.

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

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

所以我想我需要知道这些块做了什么,以及如何解析它们.

Geo*_*nza 1

有趣的问题。

如果您尝试编写一个获取 Fireworks PNG(APNG) 并保存页面的实用程序,那么它有多大帮助,但这里是:

您可以使用 Fireworks 中的“导出”菜单:“文件”>“导出”>“页面到文件”

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

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

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);
Run Code Online (Sandbox Code Playgroud)

如果将其另存为 .jsf 文件,并在 Fireworks 中打开文档,则应该只需双击该 .jsf 文件即可。

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

如果您需要矢量形状,可以使用“文件导出”>“FXG 和图像”,然后选择格式下方的“所有页面” 。FXG 是 xml 格式,并且规格可用。

华泰