Фейерверк в формате PNG, есть понимание?Любые библиотеки? - PullRequest
5 голосов
/ 22 ноября 2010

Конечная цель - экспортировать страницы в png-файле fireworks в отдельные изображения. Итак, у меня есть пара вопросов:

  1. Знаете ли вы что-нибудь - библиотеку, приложение - что это уже делает?
  2. У вас есть информация о формате? Я полагаю, что они хранят информацию в специализированных блоках. Я просто надеюсь, что формат полезных данных этих кусков не так сложен для определения.

Я еще не копался в файлах фейерверков. Я не нахожу никакой информации о формате, так что это следующий шаг, но я подумал, что кто-то может немного узнать и сэкономить мне немного времени :).

То, что я надеюсь (и, вероятно, не так), состоит в том, что каждая страница хранится в формате PNG в отдельных блоках IDAT. Маловероятно, однако, из-за векторных возможностей. Может быть, они хранят формат SVG в чанках?

Любая помощь или обсуждение приветствуется. Я планирую разобраться в этом в ближайшие пару дней.

Ben

РЕДАКТИРОВАТЬ: Вот пара вещей: ссылка на пост суперпользователя ниже указывает, что файлы APNG. файлы фейерверков не APNG. APNG содержит фрагменты анимации: acTL, fcTL, fdAT. В Fireworks, кроме блоков IDAT, есть блоки prVW, mkBF, mkTS, mkBS, mkBT, но нет блоков APNG.

На фейерверке PNG есть довольно солидный пост: http://newsgroup.xnview.com/viewtopic.php?f=35&t=20592#p86243

Так что я полагаю, что мне нужно знать, что делают эти блоки и как их анализировать.

Ответы [ 2 ]

1 голос
/ 04 августа 2018

Некоторые раскопки, которые я сделал самостоятельно для типов закрытых чанков в файлах Adobe Fireworks, выглядят следующим образом (предположим, нарезка в Python):

prVW ("предварительный просмотр эскизов?")

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

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


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.


МКТС

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
1 голос
/ 22 ноября 2010

Интересный вопрос.

Не очень, насколько это помогает, если вы пытаетесь написать утилиту, которая получает Fireworks PNG (APNG) и сохраняет страницы, но здесь идет речь:

Вы можете использоватьМеню экспорта в Fireworks: Файл> Экспорт> Страницы в файлы .

Также можно использовать параметр Сохранить как и выбрать Photoshop PSD .Этот параметр сохраняет страницы в виде папок / групп на панели слоев Photoshop, но он растеризует векторные фигуры.Тем не менее, это может быть удобно, если вы хотите проанализировать PSD вместо APNG (для доступа к изображениям, страницам).

Я собрал небольшой скрипт (в основном с использованием docs ), которая сохраняет PSD вашего текущего открытого PNG Fireworks в выбранной вами папке:

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.

Кроме того, вы заметили, что доступно расширение PSD для экспорта , которое имеет больше параметров, чем мой маленький скрипт.

Если вам нужны векторные фигуры, вы можете использовать Экспорт файла> FXG и изображения и выбрать Все страницы ниже формата.FXG - это формат xml, и доступны спецификации .

HTH

...