|
|||||||||||||
|
Change Log
! : changed + : added * : fixed - : removed __________________________________________________ [February, 2018] Version 4.0.1 ! Added missing inline documentation for VB.NET versions + Added an interface to the cAdvancedImagery class (in C#.NET and VB.NET projects) so it can be injected / mocked / unit tested. * Fixed the SLN files so they open in the correct version of Visual Studio by default * Fixed the AdvImgLib_NET.xml file for VB.NET projects * Fixed a bug in the cAdvancedImagery.IO_LoadImage method * Fixed a bug in the cAdvancedImagery.Effect_ReplaceColor method * Fixed a bug in the cAdvancedImagery.Metadata_Get and cAdvancedImagery.Metadata_GetEx methods __________________________________________________ [May 2, 2011] Version 3.3.0 ! FreeImage3.dll updated to v3.15.0: - Now uses OpenEXR 1.7.0 - Now uses ZLib 1.2.5 - Now uses LibRaw 0.13-Beta3 - Now uses LibPNG 1.4.5 - Now uses LibTIFF 3.9.4 (CVS patch 2011-01-03) - Now uses LibJPEG 8c - Now uses OpenJPEG 1.4.0 (SVN patch 2011-01-18) - Added support for saving 256 x 256 icon size - FreeImage_LoadMultiBitmapFromMemory now supports read/write operations - FreeImage_OpenMultiBitmapFromHandle now supports read/write operations - Greyscale conversions now use the Rec. 709 formula - Added FIT_FLOAT to FIT_RGBF, and FIT_UINT16 to FIT_RGBF conversion to FreeImage_ConvertToRGBF & FreeImage_ConvertToType - JPEG plugin can load & save raw Exif data (see FIMD_EXIF_RAW) - Added support for 16-bit image types to FreeImage_Invert - Added decoding support for the old and outdated JPEG-in-TIFF 6.0 format in TIFF plugin - Added new Exif makernote tags - Made many improvements in performance and processing - Fixed many different errors and bugs + Added the following values to the "IMAGE_FLAGS" enumeration (if the following "_LOAD_NOPIXELS" flag is used while loading images, the image's information & metadata are loaded without loading the entire image: JPEG_OPTIMIZE JPEG_BASELINE PSD_CMYK PSD_LAB TARGA_SAVE_RLE TIFF_LOGLUV BMP_LOAD_NOPIXELS CUT_LOAD_NOPIXELS EXR_LOAD_NOPIXELS HDR_LOAD_NOPIXELS ICO_LOAD_NOPIXELS JPEG_LOAD_NOPIXELS PCD_LOAD_NOPIXELS PCX_LOAD_NOPIXELS PFM_LOAD_NOPIXELS PNG_LOAD_NOPIXELS PNM_LOAD_NOPIXELS PSD_LOAD_NOPIXELS RAS_LOAD_NOPIXELS RAW_LOAD_NOPIXELS TARGA_LOAD_NOPIXELS TIFF_LOAD_NOPIXELS XPM_LOAD_NOPIXELS + Added the following values to the "MetaDataType" enumeration: mt_EXIF_RAW + Added a new function "modFreeImage.FreeImage_GetThumbnail". If a JPEG (Exif or JFIF formats), PSD, EXR, TGA or TIFF image is loaded and contains a thumbnail image, this function retrieves it. + Added a new function "modFreeImage.FreeImage_SetThumbnail". Attach a thumbnail image to a dib, so that it can be later stored together with the dib to an ouput image file. Only JPEG (JFIF formats), EXR, TGA and TIFF are supported. + Added a new function "modFreeImage.FreeImage_ConvertToUINT16". Converts a bitmap to an unsigned 16-bit greyscale image (i.e. image whose type is FIT_UINT16). + Added a new function "modFreeImage.FreeImage_ConvertToFloat". Converts an image to a FIT_FLOAT image type. + Added a new function "modFreeImage.FreeImage_LoadMultiBitmapFromMemory". Open a multi-page bitmap from a memory stream. + Added a new function "modFreeImage.FreeImage_SaveMultiBitmapToHandle". Allows you to save a multi-page image to a file handle. + Added a new function "modFreeImage.FreeImage_SaveMultiBitmapToMemory". Allows you to save a multi-page image to a memory stream. + Added a new function "modFreeImage.FreeImage_HasPixels". Returns TRUE (1) if the image was loaded with the "_LOAD_NOPIXELS" flag. Returns FALSE (0) otherwise. + Added a new function "modFreeImage.FreeImage_FIFSupportsNoPixels". Returns TRUE (1) if the specified image type can be loaded with the "_LOAD_NOPIXELS" flag. Returns FALSE (0) otherwise. + Added a new function "AIL.Info_AverageLuminance" which gives the average luminance / brightness of an image on a 0 to 255 scale. + Added a new function "AIL.Info_ThumbnailGet" which wraps the "FreeImage_GetThumbnail" function. + Added a new function "AIL.Info_ThumbnailSet" which wraps the "FreeImage_SetThumbnail" function. function (a parameter was missing). * Fixed a potential memory leak in the "Metadata_Set" function that could happen as a result of clean-up code being skipped if an error occurs while saving the metadata to an image __________________________________________________ [October 30, 2009] Version 3.2.0 ! FreeImage3.dll updated to v3.13.0: - Now uses libPNG 1.2.40 - Now uses libMNG 1.0.10 - Now uses OpenJPEG 1.3.0 (SVN patch 2008-08-21) - Now uses LibJPEG 7 - Now uses libTIFF 3.9.1 - Now uses LibRaw-Lite 0.7.2 - Now supports Macintosh PICT image format - Now supports RAW camera image formats - Now supports PFM image format - Improved the loading speed of all targa images - Added FreeImage_CloneMetadata function - Added FreeImage_Rotate function (which includes support for most image types) - Added FreeImage_AllocateEx function - Added FreeImage_AllocateExT function - Added FreeImage_EnlargeCanvas function - Added FreeImage_FillBackground function - Added FreeImage_OpenMultiBitmapFromHandle function - Added new compression flags to the JPEG plugin (chroma subsampling options) - Added new compression flags to the PNG plugin - Added JPEG_EXIFROTATE load flag to the JPEG plugin - Added 48-bit RGB to 32-bit conversion support in FreeImage_ConvertTo32Bits - Added support for SGI grayscale + alpha pictures to SGI plugin - Added loading support for Windows Vista icons in ICO Plugin - Added loading and saving support for RGBF images to the TIF plugin - Added missing IPTC tags and renamed some tag names to be compatible with ExifTool naming convention - Added error messages in FreeImage_Load(U) / FreeImage_Save(U) in case of bad filenames - Added FIT_RGBA16 to FIT_RGBF conversion to FreeImage_ConvertToRGBF - Added support for all Photoshop supported color modes to PSD images - Improved the speed of FreeImage_FlipHorizontal - Improved FreeImage_RotateClassic so it now keeps transparency when applied to 8-bit images - Improved loading speed of 24-bit targa images - Fixed a problem in saving to BMP file where the bfSize file header for palettized images was not being set correctly - Fixed FreeImage_Copy function so it now copies transparency info, resolution info, ICC profile and metadata - Fixed FreeImage_Paste function so it now checks for negative top/left values - The FreeImage_RotateClassic function has been depreciated. Use FreeImage_Rotate instead. + Added the following values to the "IMAGE_FORMAT" enumeration: IF_PFM (Portable Floatmap) IF_PICT (Macintosh PICT) IF_RAW (RAW camera image) + Added the following values to the "IMAGE_FLAGS" enumeration: JPEG_EXIFROTATE JPEG_SUBSAMPLING_411 JPEG_SUBSAMPLING_420 JPEG_SUBSAMPLING_422 JPEG_SUBSAMPLING_444 JPEG_QUALITY_100 JPEG_QUALITY_90 JPEG_QUALITY_80 JPEG_QUALITY_70 JPEG_QUALITY_60 JPEG_QUALITY_50 JPEG_QUALITY_40 JPEG_QUALITY_30 JPEG_QUALITY_20 JPEG_QUALITY_10 PNG_Z_BEST_SPEED PNG_Z_DEFAULT_COMPRESSION PNG_Z_BEST_COMPRESSION PNG_Z_NO_COMPRESSION PNG_INTERLACED PFM_DEFAULT PICT_DEFAULT RAW_DEFAULT RAW_PREVIEW RAW_DISPLAY + Added a new function "modFreeImage.FreeImage_Rotate". It takes an image of any bit depth, and rotates it by 90 degrees and sets the specified background where applicable (background color must be of the appropriate type for the image's bit depth) + Added a new function "modFreeImage.FreeImage_AllocateEx". It allocates a new image of the specified width, height, & bit depth (and optionally fills it with a specified color) + Added a new function "modFreeImage.FreeImage_AllocateExT". It allocates a new image of the specified image type, width, height, & bit depth (and optionally fills it with a specified color) + Added a new function "modFreeImage.FreeImage_CloneMetadata". It takes the METADATA from the source image and copies into the destination image. + Added a new function "modFreeImage.FreeImage_TmoReinhard05Ex". It converts a High Dynamic Range image to a 24-bit RGB image using a global / local operator inspired by photoreceptor physiology of the human visual system. + Added a new function "modFreeImage.FreeImage_EnlargeCanvas". It enlarges or shrinks an image selectively per side and fills newly added areas with the specified background color. + Added a new function "modFreeImage.FreeImage_OpenMultiBitmapFromHandle". It is similar to "FreeImage_OpenMultiBitmap", but opens the multi-page bitmap from a handle like the "FreeImage_LoadFromHandle" function. + Added a new enum "modFreeImage.FREE_IMAGE_COLOR_INFO". It defines constants used by the "FreeImage_FillBackground" and "FreeImage_EnlargeCanvas" functions. + Added a new function "AIL.Metadata_Copy" which wraps the "FreeImage_CloneMetadata" function. + Added a new function "AIL.IO_LoadFromBinaryEx" which does exactly the same thing as "IO_LoadFromBinary", except it returns the file format of the image that was loaded from the specified binary data. For the .NET versions, the "IO_LoadFromBinary" now has 2 extra overloads instead of creating a new function "IO_LoadFromBinaryEx". + Added a new function "AIL.IO_GetFileFormatFromBinary" which gets the image file format of a binary array and returns it as a string. + Added a new function "AIL.IO_GetFileFormatFromBinaryEx" which gets the image file format of a binary array and returns it as an IMAGE_FORMAT. For the .NET versions, the "IO_GetFileFormatFromBinary" has an overload instead of creating a new function "IO_GetFileFormatFromBinaryEx". ! The "JPEG_CMYK" constant value in the "IMAGE_FLAGS" enumeration was changed from &H1000 to &H4 (because it changed in FreeImage). This only affects people who use the actual values instead of the enumerations (which no one should be doing). ! Changed the "AIL.DLL_Version" and "AIL.DLL_Copyright" functions to use a string constant instead of the App.Major, App.Minor, & App.Revision. This prevents the version number from incorrectly reporting the calling program's version information as it's own. ! Changed the "AIL.Effect_Rotate90" function to use "FreeImage_Rotate" instead of "FreeImage_RotateClassic"... because "FreeImage_RotateClassic" has been depreciated. ! Updated the documentation for the "AIL.Metadata_Set_IPTC" function to reflect added / renamed IPTC tags ! Changed the "modFreeImage.FreeImage_CloseMemory" function so that it first checks if it's 0 before closing it, then sets the pointer value to 0 once it closes it. ! IMPORTANT: ========== Because enumeration values have changed within this version (because they changed within the FreeImage library), binary compatibility was broken. This means that the GUID's for the VB5 and VB6 version are now different. No interfaces or function definitions were changed, so it shouldn't affect anyone. But if you instantiate the VB5 or VB6 version directly via the GUID, you'll want to take notice of the following GUID changes: AdvImgLib.cAdvancedImagery BEFORE : 2E9F8012-8E92-4579-B9AA-C882F5D1144E AFTER : 3A25FCBF-ACB6-4A77-BAE8-2DAA62C4EB5B AdvImgLib.cAdvancedImagery_ASP BEFORE : B4473C27-4A47-4E6F-8012-EB35C4C2342A AFTER : 6EB2B6B9-CA72-4CE2-BBEE-1C052D9A78E5 AdvImgLib5.cAdvancedImagery BEFORE : F5132902-10D7-4215-ADF1-D7A9009F6D63 AFTER : 3FA671E9-20BB-41C9-A725-7BE6A0D311BA AdvImgLib5.cAdvancedImagery_ASP BEFORE : 4362552A-0A49-4BF1-9435-F2A4E4FDC2F0 AFTER : 412C4ACD-321C-497C-B5F2-7463358DE35A __________________________________________________ [January 15, 2008] Version 3.1.0 ! FreeImage3.dll updated to v3.10.0: - Now supports JPEG-2000 image format - Now supports OpenEXR image format - Now uses OpenJPEG 1.2.0 (SVN patch 2007-07-13) - Now uses OpenEXR 1.6.1 - Now uses libTIFF 3.9.0 beta (CVS patch 2007-10-05) - Now uses libPNG 1.2.23 - Fixed some bugs that occured while reading TIFF images - Fixed a crash bug that occured while attempting to read corrupted GIF images - Fixed some other errors related to GIF, RLE, and TIFF images. ! Changed the "modFreeImage.FreeImage_SetOutputMessage" function to use the new "_FreeImage_SetOutputMessageStdCall@4" function instead of the old "_FreeImage_SetOutputMessage@4". The old version used the "cdecl" calling convention which is incompatible with VB/VB.NET because VB uses the "stdcall" calling convention. Using the old "cdecl" function most likely caused internal failures which will now be avoided by using the new "stdcall" function. ! Changed the "AIL.IO_LoadImage" function so that if no image type is specified, by default it will properly load transparent GIF images regardless of the color palette size. If you *DO* specify the file type as IF_GIF and do not specify the GIF_LOAD256 load flag, some GIF images may not properly retain their transparency. ! Improved the speed of the "AIL.Effect_ReplaceColor" function quite a bit by altering it to use the new "modFreeImage.FreeImage_SwapColors" function. Note that this function previously converted the image to 32-bit before replacing colors... but now it does not. It will replace the colors (if possible) using the image's existing color depth and palette (if any). ! Improved the speed of the "AIL.Effect_Brightness" function by altering to use the new "modFreeImage.FreeImage_AdjustColors" function. Also added some error checking for invalid values passed as the "Percentage" parameter. ! Improved the speed of the "AIL.Effect_Contrast" function by altering to use the new "modFreeImage.FreeImage_AdjustColors" function. Also added some error checking for invalid values passed as the "Percentage" parameter. ! Improved the speed of the "AIL.Effect_Gamma" function by altering to use the new "modFreeImage.FreeImage_AdjustColors" function. ! Upgraded the VBA samples & code to Office 2003 to be more complete, more up-to-date, and more user-friendly. Old versions were Office 97 & Office 2000. ! PictureIt sample application was re-combiled using the AIL 3.1.0 classes & modules. + With the new update of the FreeImage backend, JPEG-2000 and OpenEXR image formats are now fully supported. + Added the "FIF_EXR" (ILM OpenEXR), "FIF_J2K" (JPEG-2000 File Format), and "FIF_JP2" (JPEG-2000 codestream) values to the "IMAGE_FORMAT" enumeration + Added the "EXR_DEFAULT", "EXR_FLOAT", "EXR_NONE", "EXR_ZIP", "EXR_PIZ", "EXR_PXR24", "EXR_B44", "EXR_LC", "J2K_DEFAULT", and "JP2_DEFAULT" values to the "IMAGE_FLAGS" enumeration + Added a new function "AIL.Effect_ResizeCanvas" (along with the supporting "ResizeCanvasPositions" type/structure) which allows you to increase/decrease the size of the image without increasing/decreasing the contents of the image. If you increase the canvas size, a border appears with a color you can specify. If you decrease the size of the canvas, the image is cropped. + Added the following new functions (which are included in the new version FreeImage) to the "modFreeImage3" module: - FreeImage_TmoFattal02 - FreeImage_MultigridPoissonSolver - FreeImage_PreMultiplyWithAlpha - FreeImage_SetTransparentIndex - FreeImage_GetTransparentIndex - FreeImage_GetAdjustColorsLookupTable - FreeImage_AdjustColors - FreeImage_ApplyColorMapping - FreeImage_SwapColors - FreeImage_ApplyPaletteIndexMapping - FreeImage_SwapPaletteIndices + Added a "Strong Name Key" to the .NET versions of the library (AdvImgLib_NET.snk) so that when compiled, the .NET versions will be strongly named and can be used within environments such as SharePoint and BizTalk which are very picky about security and external DLL references. Note that a different key is used for the 2003, 2005, and 2008 versions. + REALbasic 2007 (r5) support was added and you can now get the wrapper for it from the "REALbasic 2007 Wrapper" sub-directory. + .NET 2008 (Framework 3.5) support was added and you can now use this version of the library via the "VB.NET 2008 DLL" sub-directory. * Fixed the "AIL.Effect_OverlayPictureEx" function within the .NET 2003 version so it uses 32-bit integers instead of 64-bit integers. - FreeImage 2.6.1 is no longer supported, so the "/VB5 & VB6 Modules/FreeImage v2.6.1" sub-directory was removed. - REALbasic 5.5 is no longer supported, so the "REALbasic 5.5 Wrapper" sub-directory was removed. - The "VB5 & VB6 Modules" sub-direcotry was removed because all it contained was the classes and modules that you can get from the "VB5 DLL" or "VB6 DLL" sub-directories. - The "VB.NET 2003 Module" sub-directory was removed because all it contained was the "modFreeImage3.vb" module... which you can get from the "VB.NET 2003 DLL" sub-directory. - The "VB.NET 2005 Module" sub-directory was removed because all it contained was the "modFreeImage3.vb" module... which you can get from the "VB.NET 2005 DLL" sub-directory. - Removed all unneeded references from all .NET versions of the library __________________________________________________ [August 2, 2007] Version 3.0.4 * While fixing a bug in a previous release, a new bug was introduced into the "modFreeImage.BlendColor" function. This bug caused render functions which dealt with ALPHA channels for transparency to render transparent areas as opaque, and opaque areas to be rendered as transparent. This bug was fixed in v3.0.4 so rendering 32-bit tansparent images will work correctly now. __________________________________________________ [May 24, 2007] Version 3.0.3 * Fixed a problem with the "cAdvancedImagery_ASP" class (VB5 & VB6 versions) which was causing arrays being returned to be unfriendly to ASP / VbScript... which in turn was causing "Type Mismatch" errors. The following functions were affected: - Info_ColorArray - Info_ColorArrayEx - Info_GetPalette - MultiPage_Load __________________________________________________ [March 6, 2006] Version 3.0.1 ! FreeImage3.dll updated to v3.9.3: - Now uses libPNG 1.2.16 - Greatly improved the speed of the GIF encoder - Fixed saving of metadata in the PNG plugin - Fixed transparency table to alpha channel conversion for 8-bit images in FreeImage_ConvertTo32Bits (this means that when converting "transparent 8-bit GIF images" to "transparent 32-bit PNG images" using the "FreeImage_ConvertTo32Bits" function, the transparency is automatically preserved) - Fixed the use of FreeImage in low memory condition by checking some returned values of the malloc function + Added a new overloaded function for "AIL.IO_LoadFromBinary" under .NET 2003 and .NET 2005 which allows you to pass a "System.IO.Stream" object (or any object that is derived from it) as the "ImageData" parameter (instead of a byte array). This should make this function much easier to use within a .NET environment. + Added a new overloaded function for "AIL.IO_SaveToBinary" under .NET 2003 and .NET 2005 which allows you to pass a "System.IO.Stream" object (or any object that is derived from it) as the "Return_Buffer" parameter (instead of a byte array). This should make this function much easier to use within a .NET environment. + Added a new function "AIL.Effect_JpegTransform" which loads a JPEG image, applies the specified transformation to it (i.e. - flip, rotate, etc), then does a lossless save of the results to another JPEG (can also overwrite the original JPEG with the modified JPEG by passing the same file path to the 'source' and 'destination' parameters). Using this function is recommended if you just need to load a JPEG image, apply 1 or 2 of the supported effects to it, and then immediately save out the results to a file. Using this function in such a situation will give a much higher quality output image because you're not re-compressing a compressed image. + Added a new function "AIL.Effect_JpegZoom" which loads a JPEG image, takes the specified RECT (rectangle) area within that JPEG image, and zooms into that area, then does a lossless save of the results to another JPEG (can also overwrite the original JPEG with the modified JPEG by passing the same file path to the 'source' and 'destination' parameters). Using this function is recommended if you just need to load a JPEG image, zoom in/crop a specific region of the image, and then immediately save out the results to a file. Using this function in such a situation will give a much higher quality output image because you're not re-compressing a compressed image. * Fixed a bug in the "modMetafile.MF_ConvertApmToWmf" function that under certain circumstances within an ASP.NET environment would cuase errors due to file locking problems * Fixed a bug in the "cAdvancedImagery.vb" file (.NET 2003 and .NET 2005 versions) where "CopyMemory" Win32 API functions were defined with ByVal where they should have been declared as ByRef (this was causing crashes under certain circumstances) __________________________________________________ [November 5, 2006] Version 3.0.0 ! FreeImage3.dll updated to v3.9.2: - Now uses libPNG 1.2.12 - Now uses ZLib 1.2.3 - Now uses libTIFF 3.8.2 (with patch 2006-10-13) - Added read-only support for the new image format "SGI (Silicon Graphics Image)" - Added read-only support for the new image format "G3 (Raw fax format CCITT G.3)" - Added IPTC writing support to JPEG & TIFF plugins - Added support for EXIF tags to TIFF plugin (read only) - Added support for 64-bit images to "FreeImage_ConvertTo32Bits" - Added support for 48-bit images to "FreeImage_ConvertTo24Bits" - Added support for 16-bit greyscale images to "FreeImage_ConvertTo8Bits" - Added support for 1-bit images to "FreeImage_Paste" - "FreeImage_Dither" and "FreeImage_Threshold" now work with palletized 8-bit images - "FreeImage_Copy" now works with any bitmap type - "FreeImage_Allocate" now set the resolution to 72 dpi instead of 0 - 4-bit PNG are now loaded as 4-bit and no longer converted to 8-bit - Fixed several bugs ! Changed the "modFreeImage3.vb" module so that it will no longer give ANY warnings in VB.NET 2003 or VB.NET 2005 during compile (it never gave errors, but some people have a policy of "zero warnings during compile"... so this should help) ! Changed the "AIL.Effect_Grayscale" function to use the new "modFreeImage.FreeImage_ConvertToGreyscale" function ! Changed all routines that converted images to grayscale to use the new "FreeImage_ConvertToGreyscale" function ! Changed all routines in the ASP version of the VB5 and VB6 libraries that return arrays so that when the method call fails... instead of returning a variant array with 1 element defined it will return none (which is correct behavior) ! Changed all routines in the ASP version of the VB5 and VB6 libraries that return arrays so that when the returned arrays are redimentioned, they are redimentioned as the true data type instead of everything being redimentioned and returned as VARIANT arrays. The result is an array of LONG's or BYTE's or STRING's is returned in the return variant instead of an array of VARIANT's being returned in the variant (which is more correct behavior) ! Changed all routines in the ASP version of the VB5 and VB6 libraries that return arrays so that when the values that are returned via the arrays are passed back, it is done directly instead of iterating through (which should greatly improve performance) ! Changed the "AIL.Effect_SetTransparentColor" and "modFreeImage.FreeImage_Effect_SetAlphaTransparency" functions to add an optional parameter that allows you to leave the existing ALPHA channel value for pixels/ colors that do NOT match the one specified. This new parameter is optional and has a default value set to mimics the old functionality... so existing code will not be effected. ! Changed all META DATA related functions to use "AIL.Metadata_Set" and "AIL.Metadata_Get" so all code is standardized and uses the same code base (making future changes easier and more standardized) ! Renamed the "AIL.Info_MetadataClear" to "AIL.Metadata_Clear" ! Renamed the "AIL.Info_CommentsGet" to "AIL.Metadata_Get_Comments" ! Renamed the "AIL.Info_CommentsSet" to "AIL.Metadata_Set_Comments" ! Renamed the "AIL.Info_MetadataEXIF" to "AIL.Metadata_Get_EXIF" ! Renamed the "AIL.Info_MetadataGeoTIFF" to "AIL.Metadata_Get_GeoTIFF" ! Renamed the "AIL.Info_MetadataIPTC" to "AIL.Metadata_Get_IPTC" ! Renamed the "AIL.Info_MetadataXMP" to "AIL.Metadata_Get_XMP" ! Renamed the "AIL.GetMetadata" to "AIL.Metadata_Get"... and changed it from Private to Public to expose it to the AIL interface so advanced programmers can use it directly if they need to ! Renamed the "modMetafile.MF_ConvertAmpToWmf" method to "modMetafile.MF_ConvertApmToWmf" because there was a typo in the name + Added a new function "AIL.Metadata_Set" which gives advanced programmers the ability to set META DATA inforamtion directly into images if they need to + Added a new function "AIL.Metadata_Set_GeoTIFF" which gives programmers the ability to set GeoTIFF inforamtion into TIFF images + Added a new function "AIL.Metadata_Set_IPTC" which gives programmers the ability to set IPTC/NAA inforamtion into TIFF or JPEG images + Added a new function "AIL.Metadata_Set_XMP" which gives programmers the ability to set XMP packet inforamtion into TIFF, JPEG, or PNG images + Added a new function "AIL.MemoryDC_OverlayText" that allows you to take a Memory-Based DC (Device Context) or a Window-Based DC and render stylized text directly to it + Added a new function "AIL.MemoryDC_FillEllipse" that allows you to take a Memory-Based DC (Device Context) or a Window-Based DC and fill a circle or oval shape within it with a solid color, or a pattern + Added a new function "AIL.MemoryDC_FillRectangle" that allows you to take a Memory-Based DC (Device Context) or a Window-Based DC and fill the entire background, or a portion of it with a solid color, or a pattern + Added a new function "AIL.IO_CreateThumbnail" that takes an image and scales it down to meet a MAX width/height specified (keeping the original image's aspect ratio) + Added a new function "AIL.IO_SaveToBase64" that takes the specified image handle and converts it to a BASE64 encoded string. This is the same as saving the image to file, then reading the file in as a binary file, then converting that binary information to a BASE64 encoded string. + Added a new function "AIL.IO_LoadFromBase64" that takes the specified BASE64 encoded string, which was previously created by the "IO_SaveToBase64" method, and converts it to a usable image handle. + Added a new function "modFreeImage.FreeImage_ConvertToGreyscale". Converts a bitmap to a 8-bit greyscale image with a linear ramp. Contrary to the FreeImage_ConvertTo8Bits function, 1-, 4- and 8-bit palletized images are correctly converted, as well as images with a FIC_MINISWHITE color type. + Added a new function "modFreeImage.FreeImage_MakeThumbnail". that takes an image and scales it down to meet a MAX width/height specified (keeping the original image's aspect ratio) + Added a new function "modFreeImage.FreeImage_ReadMemory". Reads data from a memory stream into the specified buffer. When FreeImage_ReadMemory/FreeImage_WriteMemory are combined with FreeImage_SeekMemory/FreeImage_TellMemory, they represents an alternative to the use of temporary files. + Added a new function "modFreeImage.FreeImage_WriteMemory". Writes data to a memory stream from the specified buffer. When FreeImage_ReadMemory/FreeImage_WriteMemory are combined with FreeImage_SeekMemory/FreeImage_TellMemory, they represents an alternative to the use of temporary files. + Added the following to the "IMAGE_FLAGS" enumeration: JPEG_CMYK, JPEG_PROGRESSIVE, FAXG3_DEFAULT, SGI_DEFAULT + Added a new sub-directory called "VB.NET 2003 DLL" which contains a VB.NET 2003 (.NET Framework 1.1) version of the "Advanced Imagery Library" + Added a new sub-directory called "VB.NET 2005 DLL" which contains a VB.NET 2005 (.NET Framework 2.0) version of the "Advanced Imagery Library" + Added a new sub-directory called "VB.NET 2003 Module" which holds the file "modFreeImage3.vb" which is a FreeImage3.dll wrapper module designed for use with VB.NET 2003 (.NET Framework 1.1) + Added a new sub-directory called "VB.NET 2005 Module" which holds the file "modFreeImage3.vb" which is a FreeImage3.dll wrapper module designed for use with VB.NET 2005 (.NET Framework 2.0) + Added a new sub-directory called "REALbasic 5.5 Wrapper" which holds the file "cAdvancedImagery.xml" which is a AIL wrapper module designed for use with REALbasic 5.5 + Added a new sub-directory called "REALbasic 2005 Wrapper" which holds the file "cAdvancedImagery.xml" which is a AIL wrapper module designed for use with REALbasic 2005 + Added a new sub-directory called "REALbasic 2006 Wrapper" which holds the file "cAdvancedImagery.xml" which is a AIL wrapper module designed for use with REALbasic 2006 + Added several sample projects tot he "_SAMPLES" sub-directory - Removed all unused variable declarations from all functions in all modules __________________________________________________ [February 25, 2006] Version 2.1.1 * Fixed the "AIL.IO_SaveToBinary" method in the "cAdvancedImagery_ASP" class so it properly returns the byte stream in a format that is friendly to the "Response.BinaryWrite" call in ASP classic. * Updated the HTML Help file to provide ASP sample code to demonstrate how to use the Advanced Imagery Library to load images on the server and stream them to the client. This can be used to load an image on the server, alter it, overlay text onto it, resize it, or otherwise change it... then stream the changed image directly to the client without having to save it to the server's hard drive. One very practical modern application of this is creating security images for application forms to prevent bots from auto-signing up for web services and products. + Added a new method called "AIL.MemoryDC_InsertImage" so you don't have to convert an image to a bitmap before calling "AIL.MemoryDC_InsertBitmap" with it + Added a new method called "AIL.MemoryDC_IsValid" to tell you if a Device Context (memory-based or window-based) is valid + Added the source code to a sample application called "Picture It" which is a full-featured image editor that demonstrates the use of AIL. Keep in mind that "Picture It" is a work in progress and is NOT done yet. It will continue to change and evolve. If you have suggestions on how to improve this application, send an e-mail to: info@advimglib.com __________________________________________________ [June 3, 2005] Version 2.1.0 + Added the following "AIL.IMAGE_FLAGS" which were missing: GIF_LOAD256, GIF_PLAYBACK, TIFF_JPEG + Added a new method called "AIL.MemoryDC_Create" which creates a memory-based Device Context (DC) + Added a new method called "AIL.MemoryDC_Destroy" which deletes the specified memory-based Device Context (DC) + Added a new method called "AIL.MemoryDC_InsertBitmap" which inserts the specified BITMAP (or BRUSH, or FONT, or PEN, or REGION) into a Device Context (DC) + Added a new method called "AIL.MemoryDC_Render" which renders the BITMAP contained within the specified Device Context(DC) onto another Device Context (DC)... optionally stretching it as you do so + Added a new method called "AIL.Info_MetadataClear" which allows you to delete / clear specified metadata, or ALL metadata from a loaded image + Added a new method called "AIL.Info_MetadataGeoTIFF" which retrieves the GeoTIFF data contained within TIFF images (see also: http://www.remotesensing.org/geotiff/geotiff.html) + Added a new enumeration called "AIL.MetaDataType" to support the new method "AIL.Info_MetadataClear" + Added a new enumeration called "AIL.GifFrameDisposalMethod" to support the new changes to the method "AIL.IO_SaveAnimatedGIF" + Added the enumeration values for "MetaDataType" to the ASP include file "AIL.asp" + Added the enumeration values for "GifFrameDisposalMethod" to the ASP include file "AIL.asp" ! Changed the "AIL.IO_SaveAnimatedGIF" to add an optional parameter named "lngLoopCount" (which indicates how many times the animated GIF should loop) ! Changed the "AIL.IO_SaveAnimatedGIF" to add an optional parameter named "blnInterlaced" (which indicates whether the animated GIF's frames should be interlaced or not) ! Changed the "AIL.IO_SaveAnimatedGIF" to add an optional parameter named "lngFrameDisposalMethod" (which indicates how the animated GIF frames should be disposed once they are drawn during animation) ! Changed the "modFreeImage.FreeImage_DeleteTag" function so that it automatically cleans up the tag pointer sent to it (which avoids memory exceptions) ! Changed the "modFreeImage.FreeImage_Unload" function to check for invalid image handle before attempting to delete it * Fixed a memory leak in the "AIL.IO_SaveAnimatedGIF" method * Updated the VB.NET module "modFreeImage3.vb" to include missing information: FREE_IMAGE_FORMAT, FREE_IMAGE_FLAGS, FREE_IMAGE_MDMODEL, FREE_IMAGE_TMO, FREE_IMAGE_JPEG_OPERATION * Updated the ASP include file "AIL.asp" to include the missing IMAGE_FLAGS: GIF_LOAD256, GIF_PLAYBACK, TIFF_JPEG __________________________________________________ [May 30, 2005] Version 2.0.0 ! FreeImage3.dll updated to v3.7.0: - Now uses ZLib 1.2.2 - Now uses libPNG 1.2.8 - Now uses libTIFF 3.7.2 - Now uses libMNG 1.0.9 - Version information is now stored on the file FreeImage3.dll (makes version control much easier) - Image rotation functions have been altered to improve performance - "FreeImage_OpenMultiBitmap" function has been altered to improve performance - Added support for Animated GIF images via the "MultiPage_*" methods - Added support for saving GIF images using LZW compression (previously only reading LZW GIF images was supported) - Added support for the new image format "HDR (High Dynamic Range)" ! Altered "modMetafile.MF_ConvertWmfToEmf" so it is now a PUBLIC function (instead of PRIVATE) to facilitate some of the new WMF / EMF functionality in the AIL class ! Altered "AIL.Clipboard_Get" method to properly handle BMP, WMF, EMF, and ICO properly (note: "Clipboard_Set" always sets a BITMAP to the clipboard) ! Altered "AIL.Convert_PictureToDib" method to properly handle BMP, WMF, EMF, and ICO properly ! Altered "AIL.Convert_PictureToImage" method to properly handle BMP, WMF, EMF, and ICO properly ! Altered "AIL.Convert_PictureToBitmap" method to properly handle BMP, WMF, EMF, and ICO properly ! Altered "AIL.Convert_PictureToBitmap" method to take an additional OPTIONAL parameter "lngBackgroundColor" (defaults to black) which allows you to specify the background color of transparent WMF and EMF images. Transparent ICONs always have BLACK set as their background. ! Altered "AIL.IO_DestroyBitmap" method to correctly clean up DIB, BMP, WMF, EMF and all other GID objects (i.e. Pen, Brush, DC, Font, etc) ! Altered "AIL.IO_DestroyBitmap" method so that it will properly clean up the following GDI objects: Device Dependant Bitmap (DDB) / Win32 BITMAP, Device Independent Bitmap (DIB), Pen, Extended Pen, Brush, Font, Region, Palette, Device Context (DC), Metafile (WMF), Enhanced Metafile (EMF), and Colorspace. You should use "AIL.IO_DestroyImage" to clean up images created by "IO_Copy", "IO_CreateNew", "IO_LoadImage", "IO_LoadFromBinary", "MultiPage_Load", "Clipboard_Get", or any of the FreeImage API calls. ! Renamed "AIL.Render_Transparent" to "AIL.Render_Blend" (because that more accurately describes it's functionality) ! Renamed "modFreeImage3.FreeImage_Render_Transparent" to "modFreeImage3.FreeImage_Render_Blend" (because that more accurately describes it's functionality) + Added a new method called "AIL.Render_Transparent" which is compatible with the old "AIL.Render_Transparent" method... except for the last OPTIONAL parameter of the old method (which doesn't exist on the new method). It is strongly recommended that you use this new method to do all of your rendering because it will correctly handle all image types. + Added a new method called "AIL.Convert_To04bit" to convert images to 4-bit (16 color) + Added a new method called "AIL.Convert_ImageToEmf" which converts images to Enhanced Metafile (EMF) + Added a new method called "AIL.Convert_BitmapToEmf" which converts Win32 BITMAPs to Enhanced Metafile (EMF) + Added a new method called "AIL.Convert_PictureToEmf" which converts VB "StdPicture" objects to Enhanced Metafile (EMF) + Added a new method called "AIL.Convert_DibToEmf" which converts Device Independent Bitmaps (DIB) to Enhanced Metafile (EMF) + Added a new method called "AIL.Convert_WmfToEmf" which converts Windows Metafiles (WMF) to Enhanced Metafiles (EMF) NOTE: WMF format is from the days of 16-bit Windows and has since been replaced by EMF + Added a new method called "AIL.Convert_EmfToImage" which converts an Enhanced Metafile (EMF) to an image which can be used by AIL + Added a new method called "AIL.Convert_EmfToBitmap" which converts an Enhanced Metafile (EMF) to a Win32 BITMAP + Added a new method called "AIL.Convert_EmfToPicture" which converts an Enhanced Metafile (EMF) to a VB "StdPicture" object + Added a new method called "AIL.Convert_EmfToDib" which converts Enhanced Metafile (EMF) to Device Independent Bitmap (DIB) + Added a new method called "AIL.Info_MimeToImagetype" which takes the given MIME type (like the ones that are passed over the internet to describe stream content) and converts it to an image format type + Added a new method called "AIL.Info_MimeFromImagetype" which takes an image format type and converts it to a MIME type (which can be used to stream images over the internet, etc.) + Added a new method called "AIL.Info_CommentsSet" which sets comment text into JPEG, TIFF, & PNG images + Added a new method called "AIL.Info_CommentsGet" which retrieves comment text set into JPEG, TIFF, & PNG images + Added a new method called "AIL.Info_MetadataXMP" which retrieves the XMP data contained within JPEG, TIFF, & PNG images (see also: http://www.adobe.com/products/xmp/main.html) + Added a new method called "AIL.Info_MetadataIPTC" which retrieves the IPTC data contained within JPEG & TIFF images (see also: http://www.iptc.org or http://www.naa.org or http://www.controlledvocabulary.com/imagedatabases/iptc_naa.html) + Added a new method called "AIL.Info_MetadataEXIF" which retrieves the EXIF data contained within JPEG images (see also: http://www.exif.org) + Added a new method called "AIL.IO_SaveAnimatedGIF" which allows you to take multiple images and create an Animated GIF with them. + Added a new method called "AIL.IO_SaveToBinary" which allows you to save an image directly to binary data (byte array) without touching the file system (this allows you to save images directly to a database, or to an internet stream) + Added a new method called "AIL.IO_LoadFromBinary" which takes an image in the form of binary data (byte array) and loads it to an image which can be used by AIL + Added a new method called "AIL.IO_PrintImage" which takes the specified image and prints it to the system's default printer + Added a new method called "AIL.Info_PrinterWidth" which returns the width (in pixels) of the default printer (given the paper size and orientation) + Added a new method called "AIL.Info_PrinterHeight" which returns the height (in pixels of the default printer (given the paper size and orientation) + Added a new method called "AIL.Screen_Info" which returns the information about the user's current display settings + Added a new method called "AIL.Screen_Capture" which captures the current display as an image of the specified color depth + Added the "ExifInfoType" enumeration to AIL to be used with the "AIL.Info_MetadataEXIF" method + Added the "FITAG" type / structure to the "modFreeImage3.bas" module to support the MetaData functions + Added the "FREE_IMAGE_MDMODEL" enumeration to the "modFreeImage3.bas" module to support the MetaData functions + Added the "FREE_IMAGE_MDTYPE" enumeration tot he "modFreeImage3.bas" module to support the MetaData functions + Added the "DeleteColorSpace" Win32 API to the "modBitmap_Adv.bas" module to enable "AIL.IO_DestroyBitmap" ti delete Colorspace GID objects + Added support for the MetaData functionality that FreeImage offers, which includes the following function declarations in the "modFreeImage3.bas" module: - FreeImage_CreateTag - FreeImage_DeleteTag - FreeImage_CloneTag - FreeImage_GetTagKey - FreeImage_GetTagDescription - FreeImage_GetTagID - FreeImage_GetTagType - FreeImage_GetTagCount - FreeImage_GetTagLength - FreeImage_GetTagValue - FreeImage_SetTagKey - FreeImage_SetTagDescription - FreeImage_SetTagID - FreeImage_SetTagType - FreeImage_SetTagCount - FreeImage_SetTagLength - FreeImage_SetTagValue - FreeImage_FindFirstMetadata - FreeImage_FindNextMetadata - FreeImage_FindCloseMetadata - FreeImage_GetMetadata - FreeImage_SetMetadata - FreeImage_GetMetadataCount - FreeImage_TagToString + Added support for the "Load From Memory / Save To Memory" functionality that FreeImage offers, which includes the following function declarations in the "modFreeImage3.bas" module: - FreeImage_CloseMemory - FreeImage_OpenMemory - FreeImage_LoadFromMemory - FreeImage_SaveToMemory - FreeImage_TellMemory - FreeImage_SeekMemory - FreeImage_AcquireMemory - FreeImage_GetFileTypeFromMemory * Added the following function declarations to the "modFreeImage3.bas" module: - FreeImage_ColorQuantizeEx - FreeImage_ConvertTo4Bits - FreeImage_ConvertToRGBF - FreeImage_GetFIFMimeType - FreeImage_JPEGTransform - FreeImage_SetDotsPerMeterX - FreeImage_SetDotsPerMeterY - FreeImage_TmoDrago03 - FreeImage_TmoReinhard05 - FreeImage_ToneMapping - FreeImage_ZLibCRC32 - FreeImage_ZLibGZip - FreeImage_ZLibGUnzip * Corrected the "FreeImage_MultiPage_Add2" function within the "modFreeImage3.bas" module so that the second parameter "FileName_New" is no longer optional (because it really is required for the function to succeed) * Corrected a small bug in the "modBitma_Adv.Color_Blend" method * Corrected several other smaller bugs that were discovered during the upgrade and documentation process __________________________________________________ [September 18, 2004] Version 1.4.2 ! Altered the ASP version of AIL "AdvImgLib_ASP.dll" (all other versions of AIL stayed exactly the same). The following functions within that DLL where changed: - Info_ColorArray - Info_ColorArrayEx - Info_ColorSet - Info_ColorSetEx - Info_GetPalette - Info_SetPalette - MultiPage_Load Each of these functions had one or more parameters that were declared as "Variant Arrays". These parameters were changed to be a simple Variant (which can contain an array) to correct a problem where information passed ByRef from ASP to VB was causing a problem. __________________________________________________ [August 11, 2004] Version 1.4.1 ! Altered the DLL_Copyright and DLL_Version to make them more accurate and require less up-keep + Added the "Color_OLE" method in order to take an Red, Green, & Blue value and get back the corresponding OLE_COLOR value * Fixed a slight bug in the HTML documentation __________________________________________________ [July 11, 2004] Version 1.4.0 ! FreeImage DLL upgraded from 3.3.0 to 3.4.0 (Added LZW compression support for TIFF & GIF [not yet available for output on GIF], added GIF file format support, added DDS (DirectDraw Surface) file format support, and fixed several bugs dealing with TIFF, TARGA, and PNG images) ! Renamed the "PNM_DEFAULT", "PNM_SAVE_RAW", and "PNM_SAVE_ASCII" constants to be the following (for consistency reasons): "PBM_DEFAULT", "PBM_SAVE_RAW", "PBM_SAVE_ASCII", "PGM_DEFAULT", "PGM_SAVE_RAW", "PGM_SAVE_ASCII", "PPM_DEFAULT", "PPM_SAVE_RAW", and "PPM_SAVE_ASCII" + Added the "FIF_DDS" (DirectDraw Surface) and "FIF_GIF" (Graphics Interchange Format) values to the "IMAGE_FORMAT" enumeration + Added the "DDS_DEFAULT", "GIF_DEFAULT", "TIFF_CCITTFAX3", "TIFF_CCITTFAX4", and "TIFF_LZW" values to the "IMAGE_FLAGS" enumeration * Changed the default value of the optional "ColorOption" parameter of the "Convert_To08bit" method to be "co256_Quantize2" instead of "co256_Quantize1" because it looks better * Changed the "IO_SaveImage" method to automatically convert GIF images to 8-bit if they are not already * Fixed a bug in the "IO_SaveImage" method * Fixed a bug in the "Convert_To08bit" method that occurred if the specified image to convert was *NOT* 24-bit and "co256_Quantize1" or "co256_Quantize2" is specified as the "ColorOptions" parameter * Improved the "Convert_To08bit" method to be faster and more memory efficient when "co256_Grayscale" is specified as the "ColorOptions" parameter * Improved the "Effect_Grayscale" method to be more memory efficient __________________________________________________ [July 02, 2004] Version 1.3.1 ! Altered the way the "FreeImage_Effect_Grayscale" function works within the "modFreeImage.bas" / "modFreeImage.vb" module (should be much faster now on large images) ! The default value for the optional parameter "ColorChannel" of the "cAdvancedImagery.Effect_SetAlphaChannel" method was changed from "ICC_RGB" to "ICC_ALPHA"... which is more appropriate for the function * Fixed the "cAdvancedImagery.Effect_SetAlphaChannel" method to ensure that the MASK image that is passed in to define the image's transparecy is valid * Fixed the HTML help file (it was missing some information) + Added a method called "Effect_SetTransparencyFromLuminence" to the AIL class that allows you to set an image's transparency level based on it's luminescence. This gives a "ghost" effect to images when rendered with the "Render_Alpha" method. + Added a method called "Info_TransparentGet" which will return TRUE or FALSE to tell you if an image is currently set to be transparent. Note that only 8-bit and 32-bit images can be transparent. + Added a method called "Info_TransparentSet" which will specify whether that an image is transparent or not. Note that only 8-bit and 32-bit images can be transparent. + Added a method called "Info_Palletized" which returns TRUE if the specified image makes use of a color palette (FALSE otherwise) __________________________________________________ [June 15, 2004] Version 1.3.0 ! "AdvImgLib.dll" is compiled under VB6 [SP6], and a new version "AdvImgLib5.dll" has been created for VB5 (compiled with VB5 [SP3]). These 2 libraries are identical except for their name and what they are compiled with. + Added the ability to load Windows Metafile (WMF) and Enhanced Metafile (EMF) images via the "IO_LoadImage" method + Added the ability to save as an Enhanced Metafile (EMF) via the "IO_SaveImage" method + Added the "IF_WMF" and "IF_EMF" values to the "IMAGE_FORMAT" enumeration + Added the "WMF_DEFAULT" and "EMF_DEFAULT" values to the "IMAGE_FLAGS" enumeration + Added the ability for the "IO_GetFileFormat" and "IO_GetFileFormatEx" methods to recognize WMF and EMF image file formats + Added the "Info_ColorSet" and "Info_ColorSetEx" methods (which compliment the "Info_ColorArray" and "Info_ColorArrayEx" methods by allowing you to set an array of colors into an image) * Fixed a few minor bugs __________________________________________________ [May 28, 2004] Version 1.2.5 ! FreeImage DLL upgraded from 3.2.1 to 3.3.0 (fixed some incorrect TGA and TIFF read/write functionality) + Added a method called "Convert_BitmapToPicture" to allow you to convert a Win32 BITMAP directly to a VB "StdPicture" object + Added a method called "Convert_DibToPicture" to allow you to convert a Device Independent Bitmap (DIB) directly to a VB "StdPicture" object + Added a method called "Convert_ImageToDib" to allow you to convert an AIL Image directly to a Device Independent Bitmap (DIB) + Added a method called "Convert_PictureToBitmap" to allow you to convert a VB "StdPicture" object directly to a Win32 BITMAP + Added a method called "Convert_PictureToDib" to allow you to convert a VB "StdPicture" object directly to a Device Independent Bitmap (DIB) + Added a method called "Info_ColorArrayEx" which is just like "Info_ColorArray" but returns 3 arrays instead of 1... one for each color channel (R,G,B) + Added a method called "Color_SetPixel" which allows you to set the color at the specified coordinate of the image + Added a method called "Color_SetPixelEx" which allows you to set the R,G,B values at the specified coordinate of the image * Improved the way the "Info_ColorArray" method gets the pixels from the image so it's faster and uses less memory * Improved the way the "Color_GetPixel" method works * Made a few corrections to the help file, then added information about the new methods __________________________________________________ [May 18, 2004] Version 1.2.0 * Fixed problem with MOSAIC effect not rendering correctly * Fixed incorrect parameters being passed to "SetAlphaChannel" function __________________________________________________ [May 12, 2004] Version 1.1.0 ! FreeImage DLL upgraded from 3.2.0 to 3.2.1 ! OLE_COLOR data types changed to LONG data types (for consistency and compatibility) + Info_GetPalette() function added + Info_SetPalette() function added + ICO_MAKEALPHA Constant added * Fixed BYREF errors in ASP version __________________________________________________ [April 8, 2004] Version 1.0.0 + Initial Release
Click here to purchase the Advanced Imagery Library
|