3 ms·
PSD is horrible, that is certainly true. And underdocumented. And dumb... And we needed to implement read/write support for that in Krita. But Painttool Sai's
by hallarempt 6y ago
PSD is horrible, that is certainly true. And underdocumented. And dumb... And we needed to implement read/write support for that in Krita.
But Painttool Sai's format is actively evil, with different kinds of encryption for different size layers and things like that: https://github.com/Wunkolo/libsai/issues/6 https://github.com/Wunkolo/libsai/issues/6 (We tried to use that library to implement sai file format support for Krita, but then ran into trouble...)
Manga Studio/Clip Studio Paint's file format is interesting as well: it's just an SQLite database, with raster data stored as blobs. Not going to implement that for Krita either.
- Gualdrapo 6y agoThank you for working on Krita.
- Jasper_ 6y agoThat doesn't look like encryption or differences in algorithms, just the usual confusion and edge cases when you don't have a full mental model of the file format's fixed-size vfs entries.
- pfranz 6y ago> Manga Studio/Clip Studio Paint's file format is interesting as well: it's just an SQLite database, with raster data stored as blobs. Not going to implement that for Krita either. I'm curious why? I'm not trying to start anything, but I remember this discussion from a few months ago: https://news.ycombinator.com/item?id=23509914 https://news.ycombinator.com/item?id=23509914 > I wish my predecessor at Krita had made that choice (sqlite), instead of choosing to re-use the KOffice xml-based file format that's basically a zip file with stuff in it. It would have made adding the animation feature so much easier. To summarize the benefits to something like sqlite over zip+xml (not all were made by that author) is; update in place means not having to overwrite the whole file, not inventing xml format for describing an image, not needing to keep the entire representation in-memory, a longer saving process is more fragile, incremental loading.
- hallarempt 6y agoWell, because the actual contents of the sqlite database are obfuscated, too.