Kodak Photo CD Image extraction

Kodak Photo CD Image extraction

Kodak Photo CDs use a custom image format for its .pcd image files. To convert the .pcd files into a readable format (i.e. JPEG) you can use pcdtojpeg.

Structure

The relevant file structure of a Photo CD is as follows (adapted from Ultimedia Services Version 2 for AIX: Programmer’s Guide and Reference UMSPCDImageReader Object):

.
└── photo_cd/
    ├── images/
    │   └── img0001.pcd … imgnnnn.pcd
    ├── overview.pcd
    ├── startup.pcd
    └── info.pcd

The img*.pcd files are the actual images. overview.pcd contains thumbnails of each image. startup.pcd is a Photo CD logo. And info.pcd contains information about the Photo CD like serial number, date of creation and number of images.

Converting

Converting the images with pcdtojpeg is best made with simultaneous use of exiftool to add the metadata as comment to the JPEG image.

I used something like the following bash script:

#!/usr/bin/env bash
set -euo pipefail

if [ "$#" -ne 2 ]; then
    echo "Usage: INPUT_DIR OUTPUT_DIR"
    exit 1
fi

input_dir="$1"
output_dir="$2"

shopt -s nocaseglob # pcd image files may be lower or upper case

for f in "$input_dir"/*.pcd; do
    out="$output_dir"/$(basename "${f:0:-4}").jpg
    comment=$(pcdtojpeg -v "$f" "$out")
    exiftool -overwrite_original -comment="$comment" "$out"
done

Number of Images

If you would like to check the number of images you can use pcdinfo to get the count from the info.pcd file. You can also use it to get the serial number to e.g. check with the booklet.

Multiple Sessions

When reading a CD it is important that you check that the last session is used. Otherwise you will not get all images.

The number of sessions can be obtained with cdrdoa disk-info. pcdinfo will report the session number of the info.pcd file. These numbers should be equal.