Why did you write pcdtojpeg?
Because the existing solutions were either buggy, didn’t support anything above Base resolution images, or got the PCD color space wrong. Or all of the above.
Where can I get the source code?
The source code for pcdtojpeg is included into the pcdtojpeg distribution file. That can be downloaded from SourceForge.net.
Where can I find more information on Photo CD?
There are still some documents on the Kodak site, but the most comprehensive site that I know of is Ted Felix’s site. Ted’s site also has links to a lot of other useful sites.
Is there a GUI based version?
Yes, there’s pcdMagic for the Mac, and pcdMagic for Windows. pcdMagic also has a number of other useful features such as color profiles.
Is pcdtojpeg color managed?
Yes, pcdtojpeg is fully color managed. Converted images are in the sRGB space, and are correctly tagged with the sRBG profile. So any color managed application will display colors correctly.
Why are converted images in the sRGB color space rather than something wider like Abobe RGB?
sRGB covers the entire PCD gamut, so there’s no loss of color information, and sRGB images have the best chance of displaying correctly on non-color managed systems.
Why are the brightness and color temperature options required - I thought that the PCD scanning process automatically adjusted these?
In theory, the PCD scanning process (and specifically the SBA or Scene Balance Algorithm) adjusted the scan parameters to get an optimal image, adjusting the color temperature of all images to 6500K, and adjusting exposure, contrast, etc. In practice, there are two problems. Firstly, the SBA was relatively easily fooled, and was often disabled. Over the life of the Photo CD format, several version of SBA were used, with different results. You can check the SBA status for each individual image in the metadata information that pcdtojpeg prints out. Secondly, the Kodak scanners required careful setting up to give optimal performance. Unfortunately, in many labs this didn’t happen. In order to allow some measure of adjustment pcdtojpeg allows the white balance to be set to 5500K (which appears to help many images), and allows brightness to be adjusted.
Other image conversion solutions, including most commercial software, blow highlights, get the colors wrong, or only convert at low resolution. What’s so difficult about PCD files?
The PCD format was developed in the early 1990’s, when many of the color standards that we take for granted today didn’t exist. In addition, the format was designed in such a way that it could display on the TV’s of the day with very cheap and simple hardware. The most notable “gotcha’s” are:
  1. 1.Kodak has publicly released only small parts of the the PCD specification. Understanding it at all is a challenge - Hadmut Danisch reverse engineered the format in the early 1990’s and wrote hpcdtoppm based on his work. Subsequent to that, various additional pieces of information have leaked into the public domain, but despite Kodak abandoning the format, Kodak have declined to make the detail of the format public.
  2. 2.The PCD color space is a TV color space (SMTPE), but Kodak allowed for levels of well over 100% of nominal. This is ok for driving an analog TV, but a problem when converting to modern digital systems. Virtually all color management systems on PCs today (be they Apple, Windows or Linux) are based on the ICC model, which simply has no concept of greater than 100% levels. As a result, a simple conversion into a modern color space will either result in incorrect colors, or blown highlights. Often both.
  3. 3.The PCD format uses a form of gamma encoding that at first sight, looks very much like sRGB. However, it’s actually subtly different. Many converters assume that they can apply a pre-packaged sRGB gamma curve. Unfortunately, this results in an image with the mid-tones displaced.
  4. 4.The PCD file format, because it was designed to allow display of base images by very simple, low-cost hardware, encodes images as a low resolution base image, together with a series of incremental resolution enhancement images, and then uses Huffman compression on the incremental images. In addition, the chroma is subsampled. These types of encoding algorithms were abandoned in the 1990’s as inefficient compared to e.g., JPEG encoding which compresses two-dimensional blocks of pixels. As a result, decoding images at full resolution is much more complex than is the case for most modern image formats which use a relatively small number of encoding techniques for which well established bodies of source code exist. For example, almost all modern raw image formats are simple variations of the EXIF format.
How do I pay for pcdtojpeg?
pcdtojpeg is free software licensed under the GPL. You can use it for free as long as you abide by the terms of the GPL.
However, if you find pcdtojpeg useful, you should make a donation to the project. This allows the pcdtojpeg project, and others like it, to be developed further. You can make a donation by clicking the “Support this project” box at the bottom of the page. Note that for security reasons, in order to make a donation, you have to first create a user ID and password on the SourceForge site.
pcdtojpeg FAQs