Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 烟花PNG格式,有什么见解吗?有libs吗?_Image Processing_Png_Fireworks - Fatal编程技术网

Image processing 烟花PNG格式,有什么见解吗?有libs吗?

Image processing 烟花PNG格式,有什么见解吗?有libs吗?,image-processing,png,fireworks,Image Processing,Png,Fireworks,最终目标是将焰火png文件中的页面导出到单个图像。所以我有几个问题: 你知道有什么——库、应用程序——已经做到了这一点吗 你有关于格式的信息吗?我猜想,它们将信息存储在专门的块中。我只是希望这些块的有效载荷的格式不那么难理解 我还没有查到任何烟花文件。我找不到有关格式的信息,所以这是下一步,但我想可能有人知道一些信息,可以节省我一些时间:) 我希望(可能不是这样)每个页面都以PNG格式存储在单独的IDAT块中。不过,由于矢量的能力,不太可能。也许他们将svg格式存储在块中 任何帮助或讨论都将不胜

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

  • 你知道有什么——库、应用程序——已经做到了这一点吗
  • 你有关于格式的信息吗?我猜想,它们将信息存储在专门的块中。我只是希望这些块的有效载荷的格式不那么难理解
  • 我还没有查到任何烟花文件。我找不到有关格式的信息,所以这是下一步,但我想可能有人知道一些信息,可以节省我一些时间:)

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

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

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

    在烟花PNG上有一个非常可靠的帖子:

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

    有趣的问题

    如果您正试图编写一个实用程序来获取焰火PNG(APNG)并保存页面,则不知道它有多大帮助,但下面是:

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

    您还可以使用另存为选项并选择Photoshop PSD。 此选项将页面保留为Photoshop图层面板中的文件夹/组, 但它确实光栅化了矢量形状。不过,如果你想用它来代替APNG(访问图像、页面),它还是很方便的

    我编写了一个小脚本(主要使用),将当前打开的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);
    
    如果将其保存为.jsf文件,并在Fireworks中打开一个文档,则只需双击.jsf文件即可

    另外,注意到还有一个可用的,它比我的小脚本有更多的选项

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


    HTH

    我自己对Adobe Fireworks文件中的私有块类型做了如下挖掘(假设Python切片表示法):

    prVW(“缩略图预览?”)


    mkBF

    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

    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
    
    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

    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

    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
    
    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
    

    可能会有帮助:谢谢。我在前面看到了这一点,并打算在这个问题中引用它。我不认为这是一个直接的APNG格式,因为fireworks不知道如何使用正确的APNG。我的CS3副本中甚至没有显示每个帧…prVW块是“缩略图预览块”,我可以找到其他四个帧的0信息。我不希望依赖任何adobe产品或任何GUI步骤。我想真正自动生成这些页面导出。另外,不幸的是,Fireworks文件不是APNG。它们不包含任何APNG块;它们包含专有的“私有”块:prVW、mkBF、mkTS、mkBS、mkBT。如果他们将每个页面存储在不同的APNG框架或其他东西中,那就太好了,但不幸的是事实并非如此。@BenO我想我理解,你对构建一个可以在其他机器(甚至是服务器)上工作的工具感兴趣,并且不管使用任何Adobe工具都能完成转换。不幸的是,这就是我所能帮助的。希望你能在Fireworks论坛或产品博客上得到一些帮助。事实证明Fireworks有一个RPC API,它看起来是最省力的解决方案。它(CS5)甚至有一个名为fw.exportPages()的函数,可以将所有页面导出为PNG。所以我只需要一个正在运行的fireworks实例,我可以编写一个小的前端来将fireworks PNG转换为普通PNG。Fireworks XML RPC: