Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

PSD for PocketPC Windows Mobile 2003

0.00/5 (No votes)
28 Sep 2006 1  
A generic class to import Adobe's Photoshop (.psd) images under PocketPC Windows Mobile 2003.

Introduction

MyPSD::CPSD is a C++ class that can load images saved in Adobe's Photoshop native format. I have ported my original code to work under the PocketPC platform.

Using MyPSD::CPSD in your projects

To use the class, just include in your project the two files, MyPSD.h/.cpp. Since the class is placed inside its own namespace, either use the full name, MyPSD::CPSD psd;, or first the directive, using namespace MyPSD; and then just declare a local variable CPSD psd;.

How to use MyPSD::CPSD

MyPSD::CPSD psd; int nErrorCode = psd.Load("c:\\image.psd");
if ( 0 == nErrorCode ) // No errors were found

{
     int nDPI_x, nDPI_y; // for Horizontal & Vertical dpi

     int nWidth, nHeight; // for Width & Height in pixels

     psd.Dimensions(nWidth, nHeight);
     psd.DPI(nDPI_x, nDPI_y);
     HBITMAP hBitmap = psd.Detach();
}
else if ( -1 == nErrorCode ) // Cannot open file

    ; // Do something

else if ( -2 == nErrorCode ) // Error in the header of the file

    ; // Do something 

else if ( -3 == nErrorCode ) // Error in ColourMode Data, i.e. Palette

    ; // Do something       // File must be Index to have ColourMode Data 

else if ( -4 == nErrorCode ) // Error in ImageResource section of the file

    ; // Do something

else if ( -5 == nErrorCode ) // Error in Mask Info section of the file

    ; // Do something 

else if ( -6 == nErrorCode ) // Error in Image Data section of the file

    ; // Do something       // Actual data for pixels 

else if ( -7 == nErrorCode ) // Image is Black & White

    ; // Do something       // not yet implemented 

else if ( -8 == nErrorCode ) // An unsupported file format encountered

    ; // Do something 

else if ( -9 == nErrorCode ) // Cannot create HBITMAP handle

    ; // Do something 

else if ( -10 == nErrorCode ) // Data are compressed

    ; // Do something        // Zip format without prediction. Not yet

                             // implemented 

else if ( -11 == nErrorCode ) // Data are compressed

    ; // Do something        // Zip format with prediction. Not yet 

                             // implemented 

else if ( -12 == nErrorCode ) // Data are in an unknown format

         ; // Do something

Supported formats

The following formats are supported: RGB, Lab, CMY, CMYK, Indexed, Grayscale, Duotone. These formats could be uncompressed or compressed with RLE.

Unsupported formats/Not yet implemented

Bitmap (Black and White), and any format that is compressed with ZIP with prediction and without prediction, and that is basically because I don't know the ZIP compression algorithm (with and without prediction).

License

The class MyPSD::CPSD is free; but if you are to use it in any kind of software, especially commercial ones, I would appreciate if you could just email me; it's nice to learn that something you've written is used by others.

Thanks

I would like to thank image_processor of this forum for fixing a bug I had in the original code.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here