1
Fork 0

Update README with new file format information

This commit is contained in:
Joshua Goins 2020-03-12 08:21:24 -04:00 committed by GitHub
parent 174cdb06cc
commit 7027f3a6af

View file

@ -1,26 +1,26 @@
# Procreate Viewer
I use my computer to store all of my backups of my [Procreate](https://procreate.art) documents (since they seem reluctant to add actual cloud saving), but
I can never figure out which documents are which, so I created this app to alleviate this dilemma.
I can never figure out which documents are which, so I created this app to alleviate this dilemma. This app is written in Swift and supports the new QuickLook generator API.
This app contains a document-based viewer that associates itself with the `.procreate` file format. It also contains a Quick Look
preview and thumbnail generator, all written in Swift and Cocoa. Please note that since there is almost no documentation on how
these new generator api's work, they might be broken.
This project includes a viewer app that can render your Procreate documents at full resolution. It also contains a Quick Look preview and thumbnail generators as well. Please note that since there is almost no documentation on how
these new generator api's work, they might be broken. Once you install the app, all `.procreate` documents will automatically open with it.
This app uses the Swift Package Manager to handle our sole dependency, [ZipFoundation](https://github.com/weichsel/ZIPFoundation).
## Dependencies
We use the Swift Package Manager to handle our only Swift dependency, [ZipFoundation](https://github.com/weichsel/ZIPFoundation).
[MiniLZO](http://www.oberhumer.com/opensource/lzo/) is used to decode image data but has already been included in the repository and is built with the project.
## Procreate File Format
All `.procreate` files are actually standard ZIP files. So extracting them leads to something like this:
```
- (Multiple folders named randomly via UUID)
- (Layer folders named by their UUID)
- Contains .chunk files, presumably the actual pixel canvas data for the document.
- QuickLook [Folder]
- Thumbnail.png - Low-quality screenshot generated by Procreate.
- video [Folder]
- segments [Folder]
- segment-X.mp4, where X is a number starting from 1. These are most likely the timelapse files.
- Document.archive - ???
- segment-X.mp4, where X is a number starting from 1.
- Document.archive - NSKeyedArchive containing layer information along with other document information like canvas size.
```
We simply extract the zip file in memory, and display the `Thumbnail.png` found in the file. Notice how I said these thumbnails are
'low-quality', and even though they may seem low-quality when blown up on a Retina display like most iPads, these tend to be more
than servicable for thumbnail usage.
In order to parse Document.archive, first decode the binary plist format. Then you'll want to access the `$top` object to access the index of the `SilicaDocument` object in the `$objects` array. This is where most of your document information belongs. If you want more information please read [#2](https://github.com/redstrate/procreate-viewer/issues/2) where I break down the format of this file in more detail. Please also check out [jarmovogel's Procreate Viewer](https://github.com/jaromvogel/ProcreateViewer) which helped me understand how to read the actual image data in a Procreate document.