ImgSource Changelog

What's new in ImgSource 6.0 Alpha

Oct 6, 2014
  • Const-correctness in the API. Now you can see, from the function declaration itself, which parameters will be modified and which won't.
  • We've combined a lot of functions which differ only by type.
  • We've standardized the component size selection flags/modes across functions (for double, float, ISUINT16 and BYTE buffers)
  • Removed *Ex and *2 functions.
  • All of the ‘MMX’ references have been replaced by the more generic 'SIMD'
  • The FFT functions have been completely reworked.. They were basically broken, before.
  • Upgraded to zlib 1.2.8 and libpng 1.6.12
  • Added SIMD conversions for double/float ISUINT16/BYTE (these are much faster than doing it in a loop in C/C++)
  • Added SIMD support for many of the overlay modes (MMX, SSE and AVX, depending on your processors' capabilities)
  • Added auto-rotate for EXIF orientation on JPG read.
  • Added ability to read 96-bit (3x32 bit float) TIFFs
  • Added a nice detail enhancement function.
  • Added a new "retinex' function. Retinex is a powerful contrast recovery function which boosts contrast in light and dark areas.
  • Added function to do 'tone mapping' (expand/contract tonal range in order to improve contrast and detail).
  • Added float & double support in Gaussian blur, std dev, mean, etc..
  • Added two "divide" modes in overlay. (top/bottom and bottom/top)
  • Added a cross bilateral filter. This uses one input image to guide the filtering of another image.
  • Added a 'guided filter'. This is a new edge-preserving smoothing filter, very similar to the cross bilateral filter, but with more consistent running time (it's very fast!)
  • Added a new function to perform something close to Photoshop's "vibrance" enhancement
  • Added a single channel extract function
  • Changed "HLS" functions to "HSL", which is the more standard order. Removed HSL/HSV “BYTE” and “single” fns.
  • Multiscale denoise now accepts multichannel images.
  • Multi-threaded and SIMD support for the double/float overlay operation.
  • Many bug fixes.
  • Much API cleaning, combination of similar functions.

New in ImgSource 5.0.1.0 (May 12, 2010)

  • ISEffects is no more. All of the ISEffects functions have been moved into ImgSource.
  • Multithreaded processing has been added for most common image processing functions. This includes:
  • All resizing modes in is5_ResizeImage, and many modes of other resizing functions
  • Rotations (all non-"quick" methods)
  • Polygon warp
  • Image overlay (is5_OverlayImage)
  • Sobel filter
  • Bilateral filter
  • Alpha blend
  • Image tranformations (a.k.a. ISEffects xform engine)
  • Motion, radial and zoom blur
  • The core morphological functions: erosion and dilation (1-bit and 8-bit). And since all other morpho functions are derived from these, the speed ups apply to all morpho functions.
  • RGB/A => grayscale. This is perhaps the simplest function in all of ImgSource, and we wanted to see if it was even possible for a multi-threaded version to run faster. It does!
  • Many ImgSource functions, especially the "effects" functions (formerly of ISEffects), use the functions listed above, internally; so most of those will run faster, too.
  • is5_Initialize is now required (even if you don't have a valid license key), because it initializes the thread pool.
  • is5_Exit is now required in all applications which use ImgSource. It closes the thread pool and releases the worker threads. Failing to call is5_Exit will definitely cause memory leaks, and may cause a crash when your application exits - this is especially critical for users of the ImgSource DLL, due to the way orphaned threads created in a DLL are destroyed by Windows.
  • Other changes:
  • The is5_DrawText* functions have been sped-up, when you're using Windows' text smoothing.
  • The motion blur, radial blur and zoom blur effects have been put into their own functions and completely rewritten, and now give very nice results. They were terrible before, we apologize. They've also been multi-threaded.
  • The smooth variation of is5_DrawLineOnImage has been vastly improved. Now it's a high-quality anti-aliased line.
  • is5_GetHSVColorMatchMaskFromImage has been given three new modes of operation.
  • Added a flag in is5_EmbossRGB to allow better handling of edge pixels.
  • is5_ReadImage can now read directly to 1-bit, for all images types and bit depths.
  • Added a flag to force ImgSource to reduce fractions in the "rational" data types, when fetch EXIF tags.
  • Added CALS and ICO to the list of types identified by is5_GuessFileType
  • Reworked the parameter lists of all functions for uniformity.
  • Cleaned-up many compiler warnings related to integer size conversions, especially when building for x64.
  • Reworked the static libs' use of pre-compiled headers in VS03,05,08. This speeds-up build times tremendously.
  • Added a page to the help file which documents all the added functions, removed functions and changed parameter lists. This should make migrating from ImgSource v4 much easier. And just to prove that it can be done, and to give is5 a good workout, we upgraded our ThumbNailer application from IS v4 to v5 in less than four hours. ThumbNailer made over 600 different ImgSource / ISEffects calls - now all calling into ISv5.
  • Completely rewrote the help file.
  • New functions:
  • is5_ShuffleChannels - quickly reorder the channels in an image
  • is5_SetImageChannel - set a single channel in an image (handy when using alpha masks)
  • A set of functions has been added to control the thread pool (how large is the pool, how many threads a function can use, timeouts/callback interaction, etc.). The defaults should be fine, but you know how we like to give you options !
  • Added all ISEffects functions.
  • Bug fixes:
  • is5_AlphaBlendColor - fix when blending into RGBA without setting a blend mode flag
  • is5_AlphaBlendRGBA - fixed a bug in mode 4
  • DIB resize - fix to resize method selection (was using the wrong modes in some cases)
  • added rowstride parameters to RGB/HSL conversion functions
  • reverted back to libPng1.2.22 (1.2.40 was not working out)
  • fixed a bug in PSD reading when reading a 1-bit image to 24-bits.
  • fixed a bug in TIFF one-line-at-a-time writing
  • fixed some bugs in the grayscale to 1-bit conversion function (is5_GrayscaleTo1Bit)
  • fixed a bug in 1-bit morphological erosion.