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.