I’ve written an incomplete PSD parser in ruby, using the Photoshop 6.0
docs. It can handle paths, some adjustment layer types (curves work at
least, others undertested, sadly), most image descriptors, and
generally split the psd file into a big
hash with descriptive (and hopefully helpful) key names.
The implemented part is roughly pages 8-26 in the PS 6 file format spec
curves, levels, hue&saturation. Levels and hue&sat adjustment layers
There is some value bug in the path parsing part that I forgot to write
Actual layer & channel pixmap data is not decompressed, so implementing
ZIP decompression needed for any actual image manipulation.
Tested with a ~60 layer 21MB psd and ~70 layer 4.5MB psd.
Sample output with long strings replaced with their lengths:
I don’t know if I have time or will to continue the parser, so releasing
the code with the distant hope that someone might find it useful.