PSD support

From GIMP Developer Wiki
Jump to: navigation, search

GIMP supports both opening and exporting of PSD files. However, this support comes with various limitations due to multiple reasons. This page lists unsupported features and provides an insight into further work on better PSD support.

How to contribute

If you are interested to contribute, please see here: https://www.gimp.org/develop/.

The file-psd plugin's code is located here: https://gitlab.gnome.org/GNOME/gimp/tree/master/plug-ins/file-psd.

Most of the information on PSD/PSB is publicly available at https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/. We hear from our fellow Krita developers that it isn't complete though.

PSB files

GIMP doesn't yet support PSB files. The difference between the two is that PSB supports larger images (up to 300K px in both dimensions) and uses 8 bytes instead of 4 bytes to describe various blocks of data.

Prerequisites: none known. An interested developer can hack on that at any time.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/884

Image modes

GIMP doesn't support LAB, CMYK, Bitmap, and Duotone modes. We aren't convinced that we need to implement those exactly the way Photoshop does it. Space-specific processing with filters can be accessible without prior conversion to a particular image mode.

Prerequisites: none known, but this probably needs an extensive offline discussion.

Bug reports:

Layers

Smart objects / Layer clones

Support for layer clones is likely to be added along with non-destructive editing (scheduled for v3.2) or soon thereafter. Then this feature can be added to the PSD plug-in as well.

Prerequisites: non-destructive editing (v3.2).

Bug reports:

Vector layers

Initial implementation has been available as a set of patches since 2006. It has quite a few design issues, it has never been merged, hence we cannot support vector layers in PSD files yet.

Prerequisites: review existing patches and redesign the implementation around GEGL vector operations. An interested developer can hack on that at any time.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/282 (Merge vector layers GSoC Project)

Fill layers

Support for fill layers is likely to be added along with non-destructive editing (scheduled for v3.2) or soon thereafter. Then this feature can be added to the PSD plug-in as well.

Prerequisites: non-destructive editing (v3.2).

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/85 (Add support for fill layers)

Adjustment layers and layer effects

GIMP doesn't yet support adjustment layers and layer effects, so it cannot directly read those from PSD or export those to PSD.

A temporary workaround is available since v2.10.6: you can open PSD files saved with backwards compatibility, where non-destructive changes are flattened to a single layer.

Please note, that since 2.10, GIMP has an API for attaching filters to layers, which is a foundation work for further development.

Prerequisites: release of v3.0. Non-destructive editing is primary objective of v3.2.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/26

Text layers

GIMP doesn't yet allow editing the contents of text layers in PSD files. The PSD parser in our PSD plugin is already aware of relevant blocks (see the plug-ins/file-psd/psd.h file). Someone should add text layer editing and styling functions to the PDB, so that the plug-in could make use of styling features in GIMP.

Prerequisites: none known. An interested developer can hack on that at any time.

Bug reports:

Layer comps

GIMP doesn't yet support layer comps in PSD, because it doesn't yet have this feature itself.

Note that GIMP already has a tagging system for various resources (brushes, gradient etc.). It could be potentially extended to layers and thus provide a superset of what Photoshop allows, thus opening a way for layer comps support in PSD. We haven't discussed this feature request yet. If you are interested to implement this, please talk to us first.

Prerequisites: none known. An interested developer can hack on that at any time.

Bug reports: none filed (?)

Blending modes

Currently, GIMP supports all blending modes available in PSD as per Adobe's documentation, but doesn't yet take into consideration that "only the Normal, Dissolve, Darken, Multiply, Lighten, Linear Dodge (Add), Difference, Hue, Saturation, Color, Luminosity, Lighter Color, and Darker Color blending modes are available for 32‑bit images". Thus GIMP should detect unsupported blending modes in its project and suggest to either lower bit depth on exporting or give the user a chance to change the project composition.

Additionally, not all blending modes map perfectly between GIMP and Photoshop. Resolving this might imply hackarounds.

Prerequisites: none known. An interested developer can hack on that at any time.

Bug reports: none filed

Blending options

GIMP doesn't yet support some advanced layer blending options available in Photoshop, hence it does not support this feature in PSD files. The options are:

  • excluding particular channels from blending
  • conditional per-channel blending

Hence GIMP should gain these features first, then the PSD plug-in can be patched accordingly.

This hasn't been discussed by the team much yet, but it should be noted that channel selection for conditional blending in Photoshop is restricted to Grey and the channels of the current color model/space (e.g. R, G, and B for an RGB image). This seems overly restrictive, implementing support for blending based on CIE CLH and other color spaces would be beneficial for users (as demonstrated by e.g. darktable). Thus the implementation would be a superset of what Photoshop allows.

Prerequisites: we haven't discussed yet if this is 2.10, 3.0, or 3.2 material. Please talk to us first.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/1305 (conditional blending)

Channels

GIMP doesn't yet store channel colors when exporting to PSD. We also don't know if this is possible with Photoshop.

Prerequisites: none known, file format spec by Adobe wasn't available when the bug was filed, investigation is required.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/189

Masks

When loading a PSD file, GIMP cuts off a layer mask when it's outside layer boundary. The bug hasn't been investigated yet. We also need sample PSD images, we only have screenshots.

Prerequisites: none known, investigation needed.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/1053

Paths

GIMP doesn't yet save paths as working paths to PSD.

Prerequisites: none known. An interested developer can hack on that at any time.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/145

Undo history

Undo history isn't supported in either importing or exporting of PSD files. It hasn't been investigated yet, but GIMP doesn't support saving undo history to its own XCF files yet.

Prerequisites: add support for saving undo history to XCF. This needs thorough discussion and design. Please talk to us first.

Bug report: https://gitlab.gnome.org/GNOME/gimp/issues/457 (PSD export and import miss the undo history)