This is a Paint.NET plugin for loading and saving Photoshop .PSD files. It was written by Frank Blumenberg in 2006, and has been maintained by Tao Yue since 2010.

Installation

Simply unzip and move PhotoShop.dll to the "FileTypes" folder in the directory where Paint.NET is installed.

Discussion

We do not use the Discussion forum on Codeplex, since Paint.NET already has a forum where users gather for discussion. There is a thread for this PSD plugin on the official Paint.NET forums: http://forums.getpaint.net/index.php?/topic/18128-photoshop-psd-file-plugin-107-and-later/

To be notified of new releases, you may subscribe either to the discussion thread, or to the relevant RSS feeds on Codeplex.

Bug Reporting and Patches

Bug reports are welcomed. Interchanging PSD files reliably with Adobe Photoshop is the raison d'être of the plugin. Improving reliability is of much higher priority than features. Please submit bug reports through the Issue Tracker on Codeplex. If you are not an experienced tester/developer, please first read "How to Report Bugs Effectively," by Simon Tatham. http://www.chiark.greenend.org.uk/~sgtatham/bugs.html

Patches and other contributions are also welcomed. I would prefer that you discuss the patch beforehand with me so that I know what's coming. I might also be able to offer advice on the best way to go about making the change with the least disruption to the codebase. Please click the "Contact" link on my Codeplex page: http://www.codeplex.com/site/users/view/taoyue

Features

  • Layers
  • Masks (loading only: merged into the layer)
  • RLE-compressed files
  • The following color modes can be loaded.
    • 32 Bit-RGBA
    • Gray scale
    • Indexed
    • CMYK
    • Multichannel CMY
    • Duotone (as gray scale)
    • Lab
  • Only RGBA images are saved out, since Paint.NET uses RGBA internally.

Limitations

The filetype plugin does not include every feature in the PSD file format. Only those elements in PSD that have counterparts in Paint.NET are implemented. For example: Text layers, layer effects, and vector masks do not exist in Paint.NET. PSD files with these features may load using the plugin, but a number of elements will be missing.

In addition, PSD is a complex and poorly-documented file format. In some cases, Adobe Photoshop will itself violate the format specification. The primary goal is for the plugin to interchange reliably with Photoshop.

Memory usage

Photoshop allows layers to be smaller than the image. Paint.NET, however, uses layers with the same dimensions as the image. A PSD file with large dimensions and many layers will thus take up substantially more memory when loaded into Paint.NET than when loaded into Photoshop. In some cases, this will cause Paint.NET to run out of memory, and the file will not be loadable.

However, we still do the best that we can with this limitation -- when saving PSD files, we will crop the layer to the smallest non-transparent rectangle so that the file can be loaded efficiently back into Photoshop.

Layer blend modes

Paint.NET blend modes do not correspond one-to-one with Photoshop blend modes. Currently, the following transformation is used when saving:

Paint.NET blend mode Photoshop blend mode key
Normal norm
Multiply mul
Additive norm
ColorBurn div
ColorDodge idiv
Overlay over
Difference diff
Lighten lite
Darken dark
Screen scrn


The following Paint.NET blend modes are not available in the documented PSD file format, and are saved as normal layers instead:
  • Reflect
  • Glow
  • Negation
  • Xor

The following Photoshop blend modes do not exist in Paint.NET, and are loaded as normal layers instead.
  • hue
  • sat
  • colr
  • lum
  • diss
  • hLit
  • sLit
  • smud

Speed of operation

The plugin will never be as fast as Photoshop itself, which can load large chunks of the binary directly into memory as its native representation of the image. In contrast, this PSD plugin must convert to the internal Paint.NET image representation on load, and to the Photoshop file format on save.

To speed up this conversion, the plugin is (mostly) parallelized at a coarse granularity. Thus, loading and saving of large multilayer files will be considerably faster on a multi-core or multi-processor machine. Single-layer images will not benefit as much.

The parallelization is not perfect. The granularity is too coarse, and some sequential segments remain. The intention is to improve the parallelization of the plugin after Paint.NET has been retargeted to the .NET Framework 4.0, which includes the Parallel Extensions for .NET.

Last edited Sep 12, 2010 at 12:04 AM by taoyue, version 15