According to the author, “If you are using or contemplating using photographic imaging in a professional Windows application, you need this book!” I agree: this book is practical, understandable, and well written.
The focus is on the photographic imaging techniques required for professional Windows application programs. The book gives a complete set of object-oriented tools (C++ classes) for adding imaging to any Windows applications. Full source code is provided on the companion CD in the form of reusable C++ classes that can easily be incorporated into imaging programs.
Chapter 1 introduces fundamental ideas of Windows image processing. A photographic image processing program is provided. Chapter 2 presents some Windows background material that is important to imaging, such as device contents, coordinate systems, mapping modes, palette management, and device-independent bitmaps. Chapter 3 presents a vendor-neutral class library for encapsulation of the Windows common dialogue boxes useful in imaging applications. Chapter 4 presents an architecture for reading and writing graphic image files. A class library is developed that supports monochrome, palletized, and true color images in BMP, GIF, and TIFF formats. This class can easily be extended to other graphic file formats. Chapter 5 discusses the color reduction problem. The color reduction techniques presented include median cut color quantization and uniform quantization with dithering. C++ classes are developed for both techniques. Chapter 6 discusses how images are displayed in the Windows environment. A C++ class that simplifies the image display process is developed. This class supports many important techniques, including image panning, image zooming, displaying an image to scale, displaying an image to fit within a window, and displaying an image with its aspect ratio maintained. Chapter 7 does for printing what chapter 6 does for image display within a window. Chapter8 describes image acquisition from TWAIN-compliant devices. TWAIN is an industry standard for raster-generating devices (such as scanners). A class is developed for control of, and data acquisition from, TWAIN-compliant devices. Chapter9 describes some fundamental image-processing algorithms that can be applied to photographic images. Algorithms are included for image cropping, rotation, flipping, copying images to and from the clipboard, and brightness and contrast reduction. Chapter 10 ends the discussion by presenting three important concepts: image caching, generation and use of thumbnail images, and annotation of images with text, graphics, or both. Classes implementing these techniques are provided.
Since the book was written before the release of Windows 95, the features of Windows 95 imaging are not discussed here. The book is intended for the intermediate to advanced programmer or hobbyist interested in Windows imaging. A basic knowledge of C++ and Windows is required. The C++ classes and programs are indispensable to all those interested in Windows imaging.