Converting PCD (Kodak Photo CD) files on a Linux system

Back in the old west before the dawn of digital cameras, you could get your photos transferred to a  Kodak Photo CD for everlasting storage. Like other proprietary formats, PCD lost out to the next generation and left those who believed in it behind.

Well, fast forward fifteen years and I have just located an old Kodak Photo CD, looking to browse it’s content. Thanks to reverse engineering we have a few options when it comes to converting the pictures to a more usable format.

The next section will demonstrate the converting process using ImageMagick and pcdtojpeg. You’ll need to have ImageMagick and a C++ compiler installed to be able to follow the examples below. With a multi-usage distro like, say Slackware Linux, all is provided for out of the box.

 Converting PCD files using ImageMagick

Navigate to the folder containing your PCD files and run the following command:

mogrify -colorspace RGB -format jpg *.pcd[5]

With the mogrify command above, the original images are left untouched and the copies are stored in the JPEG image format. The reason why the PCD image format is indexed (pcd[5]) is because the file contains the same image at 6 different sizes. Using “index = 5” will provide us with the image with the highest resolution. The “-colorspace RGB” option is needed in order to get the colors right according to the ImageMagick documentation.

 Converting PCD files using pcdtojpeg

pcdtojpeg boasts the following features:

  1. No blown highlights
  2. Converts at full resolution
  3. Correct color
  4. Extracts metadata
  5. Fast processing

Navigate to your home folder with the command:

cd ~

Download pcdtojpeg with the command:

wget http://sourceforge.net/project/platformdownload.php?group_id=262741

Unzip pcdtojpeg with the command:

unzip pcdtojpeg*

Enter the pcdtojpeg src directory with the command:

cd pcdtojpeg*/src/

Compile pcdtojpeg with the command:

g++ main.cpp pcdDecode.cpp -ljpeg -lpthread -o pcdtojpeg

Move the pcdtojpeg executable to your home directory

mv pcdtojpeg $HOME

Export the home directory to the PATH variable so we can run pcdtojpeg from any location (for the current session only).

export PATH=$PATH:$HOME

Now lets navigate to the directory containing the PCD files and convert them using pcdtojpeg.
The following command loops through all the PCD files in the current directory and convert them to JPEG files.

for i in *.pcd; do pcdtojpeg $i; done

Have a look at the pcdtojpeg documentation at for more advanced usage, though the default implementation seems to be optimized enough for my needs.

In a sad turn of events, Kodak has just filed for bankruptcy. Signifying perhaps the unavoidable faith for most proprietary formats.