Converts a LEADTOOLS for .NET Leadtools.RasterImage object to WPF System.Windows.Media.ImageSource.
public static ImageSource ConvertToSource(
RasterImage image,
ConvertToSourceOptions options
)
image
The Leadtools.RasterImage object containing the image data to convert.
options
Options to control the conversion operation. The following values can be ORed together:
Value | Meaning |
---|---|
ConvertToSourceOptions.None | No options |
ConvertToSourceOptions.KeepAlphaValues | If the source Leadtools.RasterImage is 32 or 64-bits/pixel, then use the alpha values from this alpha if the result of the conversion is also a 32 or 64-bits/pixel System.Windows.Media.ImageSource. If this flagged is not specified, the result System.Windows.Media.ImageSource will always have an alpha value of all 1's (255 for 32-bit images or 65535 for 64-bit images) regardless of the alpha values in the source Leadtools.RasterImage. This can be useful when converting some 32-bit images that may have 0 for the alpha (such as BMP files) which translates into an System.Windows.Media.ImageSource that is completely transparent. If this flag is specified, then the source image alpha values will be used as is. |
ConvertToSourceOptions.KeepViewPerspective | Keep the original Leadtools.RasterImage view perspective. The Leadtools.RasterImage objects supports having an image data orientation other than the normal top-left through the RasterImage.ViewPerspective property. If the source Leadtools.RasterImage has a view-perspective other than RasterViewPerspective.TopLeft and this flag is specified, then the result System.Windows.Media.ImageSource might be flipped, reversed or rotated. For example, if the source view-perspective is RasterViewPerspective.BottomLeft and this flag is specified in the conversion options, then the result System.Windows.Media.ImageSource will be flipped. If this flag is not specified, then the conversion might flip, reverse or rotate the image data as needed to provide correct (top-left) System.Windows.Media.ImageSource. |
ConvertToSourceOptions.IgnoreLowHighBitsOnGrayImages | Do not use the gray scale bit window values when converting 12 or 16-bit grayscale Leadtools.RasterImage objects. The Leadtools.RasterImage object contains the RasterImage.LowBit and RasterImage.HighBit values that can be set to provide a Window into the image data. This is mostly used by medical applications during a window-leveling operations. If this flag is specified, the RasterImage.LowBit and RasterImage.HighBit values are ignored and all of the image data is used when converting the Leadtools.RasterImage to System.Windows.Media.ImageSource. If this flag is not specified, then only the image data between RasterImage.LowBit and RasterImage.HighBit is used. |
ConvertToSourceOptions.UseSetSource | Note: This option is no longer supported. |
An System.Windows.Media.ImageSource object representing the converted image.
LEADTOOLS for .NET and Windows Presentation Foundation (WPF) support different pixel formats. These pixel formats may not be identical in some cases. The conversion process takes care of converting scanlines to a suitable format that best matches the source data.
The ConvertToSource method supports converting from any Leadtools.RasterImage regardless of the combination of the bits/pixel, compression, color order, grayscale properties of the source image. The ConvertToSource method will always returns a valid WPF System.Windows.Media.ImageSource by allocating temporary memory for the data and performing the necessary conversion on it.
In some cases, the Leadtools.RasterImage data is compatible with WPF and no conversion takes place. Converting a compatible Leadtools.RasterImage to WPF System.Windows.Media.ImageSource is faster and takes less resources than converting a non-compatible image. Please note that currently WPF does not allow direct access to the raw data pointers where the image data is stored. Therefore, there is always at least one copy operation regardless if the source data can be used directly by a WPF image (For example, through the use of the System.Windows.Media.Imaging.BitmapSource.Create method).
For a Leadtools.RasterImage to be compatible with WPF, it must have the following properties:
The Leadtools.RasterImage must have conventional memory, not disk and nor tiled memory. ( RasterImage.IsConventionalMemory must be true and RasterImage.IsDiskMemory, RasterImage.IsTiled, RasterImage.IsGlobalMemory and RasterImage.IsMirrored must all be false)
The Leadtools.RasterImage data must not be compressed (RasterImage.IsCompressed and RasterImage.IsSuperCompressed must both be false)
The Leadtools.RasterImage data must not be signed (RasterImage.Signed must be false)
The Leadtools.RasterImage must have compatible bits/pixel and color order values according the table below.
The following table lists the source Leadtools.RasterImage bits/pixel and source data properties and whether each combination is compatible with WPF.
Both LEADTOOLS and Windows Presentation Foundation support 16 bit grayscale image data. However LEADTOOLS supports extra features such as low/high bit values and color lookup tables. For a LEADTOOLS 16-bit grayscale Leadtools.RasterImage to be compatible with a WPF image with System.Windows.Media.PixelFormats.Gray16, the following conditions must be met:
The value of RasterImage.UseLookupTable must be false
The low/high bit values must not be used. Either, the values of RasterImage.LowBit and RasterImage.HighBit are set to the default values or the ConvertToSourceOptions.IgnoreLowHighBitsOnGrayImages flag must be passed to the ConvertToSource method
When converting images that support an alpha channel (32 or 64 bits/pixel images), the ConvertToSource method supports masking out the alpha channel bits to all 1's through or using the source image alpha channel bits through the use of the ConvertToSourceOptions.KeepAlphaValues flag. Masking out the alpha channel bits requires the source data image to be processed and as a result, the image will not be compatible with WPF.
For more information refer to RasterImage and WPF.
This example will use LEADTOOLS to load a Leadtools.RasterImage, convert to a WPF System.Windows.Media.ImageSource and set it in a System.Windows.Controls.Image control.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.Windows.Media;
private void ConvertToSourceExample(System.Windows.Controls.Image imageControl)
{
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
using (RasterCodecs codecs = new RasterCodecs())
{
// Load the image
using (RasterImage rasterImage = codecs.Load(srcFileName, 0, CodecsLoadByteOrder.Bgr, 1, 1))
{
// Convert it to WPF/Silverlight ImageSource
System.Windows.Media.ImageSource source = RasterImageConverter.ConvertToSource(rasterImage, ConvertToSourceOptions.None);
// Set it in the Image control
imageControl.Source = source;
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}