ImageCFC, by Rick Root (rick@webworksllc.com) http://www.opensourcecf.com/imagecfc/ 2.19 - August 18, 2007 - completely rewrote the writeImage() method - prevent use of filters in CF 6.1 due to lack of javacast null - added feather.png to test suite (test-cases.cfm) - made test-cases.cfm easier to use - corrected bug in resize() method where resize wouldn't work on indexed color PNGs. - NOTE: posterization filter does not work on some image types. 2.18 - July 10, 2007 - deleted support for gaussianBlur and boxBlur filters, too slow! - added private convertImageObject() method which converts image objects to other types. Primarily used when the image type is of TYPE_CUSTOM (0) - checked code into subversion! - changes to test-cases.cfm - canModify value in struct is now ALWAYS "true" until someone tells me they can't modify an image. 2.17 - June 1, 2007 - The following changes were made in order to better support CFFM 1.16. - imageObject.cfc modified to call image.cfc readImage() method with second argument = "no" so it would still work with non-modifiable images - all imagecfc methods that attempt to modify an image will now throw an error if the image type = 0 (TYPE_CUSTOM). 2.16 - May 30, 2007 - NOTE: ALL CODE CHANGES in this version to image.cfc only! - corrected bug in getImageInfo() method, caused error attempting to call getImageMetadata() function on image object (only works on file handles) - Fixed varscope issues - built and included several test cases - Added ability to use "built in" java fonts for addText() method (see documentation) 2.15 - May 29, 2007 - NOTE: ALL CODE CHANGES in this version to image.cfc only! - corrected documentation bug in docs/readImage.cfc - Modified readImageFromFile() to return java file object in order to retrieve image metadata - added getImageMetadata() method (private, called by getImageInfo()) - modified getImageInfo() to include image metadata - fixed bug in writeImage() method which caused it to not return errors properly. - Numerous changes to many methods to make reading of images more consistent. - properly var scoped everything 2.14 - March 7, 2007 - Added "cropToExact" option to resize() method - adjusted scaleWidth() and scaleHeight() methods to pass preserveAspect and cropToExact values ("False") to the resize method - added "cropToExact" argument to resize() method of imageObject.cfc 2.13 - January 25, 2007 - Added try/catch code to imageio.read() method called in the readImageFromFile() method. Attempting to read CMYK jpeg images (and other unsupported types) would cause unfriendly errors. 2.12 - December 26, 2006 - corrected bug in throw() method where retVal should have been initialized as StructNew() - Added more error trapping to getImageInfo() method in case readImage() method fails to load the image. 2.11 - December 18, 2006 - Added getImageInfo() and getImageObject() methods to ImageObject.cfc (object oriented interface to image.cfc) No version change. 2.11 - December 14, 2006 - performance improvements to gaussianFilter.cfc - performance improvements to boxBlurFilter.cfc - Corrected bugs with getOption() method - Added object oriented interface CFC ImageObject.cfc (see file for example code) - corrected documentation error in docs/getOption.cfm 2.10 - December 13, 2006 - added filterGaussianBlur() - added filterBoxBlur() - added filterFastBlur() - added filterSharpenFilter() - added filterPosterizeFilter() - the above filters are implemented via separate CFCs 2.00 - December 8, 2006 - added javacast to arguments of java methods requiring specific numeric data types to prevent problems with coldfusion variables being seen as doubles when java is looking for ints. - converted readImage() and writeImage() to public methods - writeImage() method writes to temp directory and then uses cffile to move image to its final destination. This corrects a known issue where resizing an image down and saving it to the same file did not actually reduce the physical file size. - added better error checking to writeImage() method. - readImageFromFile() uses fileExists() to determine if a file exists before attempting to read it now. - added additional error checking to readImageFromURL() - changed scaleX() to scaleWidth() - changed scaleY() to scaleHeight() - Added optional preserveAspect argument to resize() method (allowing you to resize an image to fit within a certain width and height without messing with the aspect ratio) - Added more rendering hints - Added new setOption() and getOption() methods that allow you to set the various CFC options, such as text anti-aliasing and interpolation mode. - WROTE REAL API DOCUMENTATION! 2.00b3 - permission denied errors and directory path issues no longer cause untrapped exceptions during file write operations. 2.00b2 - fixed stuff - add