Converts a LEADTOOLS for .NET RasterImage object into a WinRT Windows.UI.Xaml.Media.ImageSource.
image
The RasterImage object containing the image data to convert.
options
Options to control the conversion operation.
An Windows.UI.Xaml.Media.ImageSource object representing the converted image.
LEADTOOLS for .NET and WinRT 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 ConvertToImageSource method supports converting from any RasterImage regardless of the combination of the bits/pixel, compression, color order, or grayscale properties of the source image. The ConvertToImageSource method will always returns a valid WinRT Windows.UI.Xaml.Media.ImageSource by allocating temporary memory for the data and performing the necessary conversion on it.
The options parameter can have the following values:
Value | Meaning |
---|---|
ConvertToImageSource.None | No options |
ConvertToImageSource.KeepAlphaValues |
If the source 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 Windows.UI.Xaml.Media.ImageSource. If this flag is not specified, the resulting Windows.UI.Xaml.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 RasterImage. This can be useful when converting some 32-bit images that have 0 for the alpha (such as BMP files) which translate into a Windows.UI.Xaml.Media.ImageSource that is completely transparent. If this flag is specified, then the source image alpha values will be used as is. |
ConvertToImageSource.KeepViewPerspective |
Keep the original RasterImage view perspective. RasterImage objects support having an image data orientation other than the normal top-left through the RasterImage.ViewPerspective property. If the source RasterImage has a view-perspective other than RasterViewPerspective.TopLeft and this flag is specified, then the resulting Windows.UI.Xaml.Media.ImageSource can 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 resulting Windows.UI.Xaml.Media.ImageSource will be flipped. If this flag is not specified, then the conversion can flip, reverse or rotate the image data as needed to provide correct (top-left) Windows.UI.Xaml.Media.ImageSource. |
ConvertToImageSource.IgnoreLowHighBitsOnGrayImages |
Do not use the grayscale bit window values when converting 12 or 16-bit grayscale RasterImage objects. The 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 RasterImage to Windows.UI.Xaml.Media.ImageSource. If this flag is not specified, then only the image data between RasterImage.LowBit and RasterImage.HighBit is used. |
These values can be ORed together In some cases, the RasterImage data is compatible with WinRT and no conversion takes place. Converting a compatible RasterImage into a WinRT Windows.UI.Xaml.Media.ImageSource is faster and takes less resources than converting a non-compatible image. Please note that currently WinRT 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 of whether the source data can be used directly by a WinRT image (For example, through the use of the System.Windows.Media.Imaging.BitmapSource.Create method).
For a RasterImage to be compatible with WinRT, it must have the following properties:
The RasterImage must use 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 RasterImage data must not be compressed (RasterImage.IsCompressed and RasterImage.IsSuperCompressed must both be false)
The RasterImage data must not be signed (RasterImage.Signed must be false)
The RasterImage must have compatible bits/pixel and color order values according the table below.
The following table lists the source RasterImage bits/pixel and source data properties and whether the combination is compatible with WinRT.
Source Bits/Pixel | More Source Data | Compatible | Resulting PixelFormat |
---|---|---|---|
1 |
Black on white palette |
Yes |
|
1 |
Any other palette |
Yes |
|
2 |
- |
Yes |
|
3 |
- |
No |
|
4 |
- |
Yes |
|
5 |
- |
No |
|
6 |
- |
No |
|
7 |
No |
||
8 |
Grayscale palette |
Yes |
|
8 |
Color palette |
Yes |
|
12 |
- |
No |
|
16 |
Compatible grayscale data (Refer to notes on grayscale images below) |
Yes |
|
16 |
Incompatible grayscale data |
No |
|
16 |
Color data |
Yes |
|
24 |
BGR color order |
Yes |
|
24 |
RGB color order |
Yes |
|
32 |
BGR color order (Refer to notes on alpha channel below) |
Yes |
|
32 |
RGB color order |
No |
|
48 |
BGR color order |
No |
|
48 |
RGB color order |
Yes |
|
64 |
BGR color order |
No |
|
64 |
RGB color order (Refer to notes on alpha channel below) |
Yes |
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 RasterImage to be compatible with a WinRT image with Gray16, the following conditions must be met:
The value of the RasterImage.UseLookupTable property 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 ConvertToImageSource.IgnoreLowHighBitsOnGrayImages flag must be passed to the ConvertToImageSource method.
When converting images that support an alpha channel (32 or 64 bits/pixel images), the ConvertToImageSource 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 ConvertToImageSource.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 WinRT.
For more information refer to RasterImage and WinRT.