hpcdtoppm v0.3 - convert a Photo-CD file into a portable pixmap


hpcdtoppm [options] pcd-file [ppm-file]


Reads a Photo-CD Image file or Overview file, and outputs portable pixmap. Image files you can find on the Photo-CD in photo_cd/images, they are named as "imgnnnn.pcd", where nnnn is a 4-digit-number. The Overview file is at photo_cd/overview.pcd . If there is no ppm-file-name given, output will be printed to stdout. hpcdtoppm stands for "Hadmut’s pcdtoppm" to make it distinguishable in case someone else is building the same thing and calling it pcdtoppm.



Give some information from the fileheader to stderr. It works only for Image files. (It is not working correctly, just printing some strings.)


Apply simple sharpness-operator on the Luma-channel.


Do not show the complete image, but only the decompressed difference. It works only on the 4Base and the 16Base resolution. It does not have any deeper sense, but it was simple to implement and it shows what causes different sizes of image files.


Rotate the picture clockwise for portraits.


Rotate the picture counter-clockwise for portraits.


Try to find out the image orientation byself. This doesn’t work for overview files yet. It is very experimental and depends on one byte. Please tell me if it doesn’t work.


Overskip Mode. Works on Base/16, Base/4, Base and 4Base. In Photo-CD images the luma channel is stored in full resolution, the two chroma channels are stored in half resolution only and have to be interpolated. In the Overskip Mode the chroma channels of the next higher resolution are taken instead of interpolating. To see the difference, generate one ppm with and one ppm without this flag. Use pnmarith to generate the difference image of these two images. Call ppmhist for this difference or show it with xv (push the HistEq button in the color editor).

-1 | -Base/16 | -128x192

Extract the Base/16 size picture (size 128x192 pixels). Note that you can only give one size option.

-2 | -Base/4 | -256x384

Extract the Base/4 size picture.

-3 | -Base | -512x768

Extract the Base size picture.

-4 | -4Base | -1024x1536

Extract the 4Base size picture.

-5 | -16Base | -2048x3072

Extract the 16Base size picture.

-0 | -Overview | -O

Extract all pictures from an Overview file. A ppmfilename must be given. If the given name is "foo", the files are named "foonnnn", where nnnn is a 4-digit number. Since they are stored in Base/16 format, they are extracted in this format.


Suppress the ycc to rgb conversion. This is experimental only. You can use this and apply ppmtorgb3 on the file. Then you will get three pgm-files, one Luma and two Chroma files.


I still don’t have enough information about the Photo-CD to take care of all data structures. The informations i have are quite vague and this program was developed by starring at the hex-dumps and the famous trial-and-error-method. :-) If anything doesn’t work, please send me a report and perhaps you could try to find out, why it doesn’t work.


ppm(5), ppmquant(1), ppmtopgm(1), ppmhist(1), pnmarith(1), ppmtorgb3(1), xv(1)


Copyright (c) 1992 by Hadmut Danisch (danisch@ira.uka.de). Permission to use and distribute this software and its documentation for noncommercial use and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. It is not allowed to sell this software in any way. This software is not public domain.