WideImage is an object-oriented library for image manipulation.
WideImage supports all formats that are natively supported by the GD extension on the server
(this currently includes GIF, PNG, JPG, GD, GD2, WBMP, XBM, XPM). It also supports BMP (read/write) and TGA (read only).
Loading an image is easy — you only have to call the WideImage::load() static method and specify the image source.
WideImage tries to detect whether the source is a file, url, upload, a binary string or a valid GD image resource (image handle). WideImage supports the most common image formats.
WideImage supports saving images to files, outputting the image directly to the browser, and retrieving them as a string. With string output, you can easily capture image data and write it for example to a database.
In WideImage, you manipulate the images by calling the appropriate operation method on the image object. Every operation returns a new Image object (for the nerds: this is basically a value object).
Smart coordinates were implemented to make operations that involve coordinates, dimensions, and positioning easier. They can be useful with any operation that requires coordinates as parameters, like resize, crop, etc.
WideImage takes care of image resources for you; you don't have to destroy the images explicitly, they're automatically destroyed when an image object is no longer used. You can change that at runtime by releasing the handle of an image via releaseHandle() method.