Leadtools.Windows.Media Namespace > RasterImageConverter Class : ConvertToSource Method |
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 only used by the LEADTOOLS for Silverlight toolkit. The WPF version of this flag is ignored and have no effect on the conversion operation. Use this option to use Silverlight native loading capabilities when converting a Leadtools.RasterImage into a System.Windows.Media.ImageSource. When this option is specified, one of the following will happen: If source Leadtools.RasterImage has a bits/pixel value of 1, 2, 3, 4, 5, 6, 7 or 8, the data will be converted to a PNG stream first then a call is made to BitmapSource.SetSource to construct the result image. If source bits/pixel value is 12 or 16, then the data will be converted to a JPEG stream first and then a call is made to BitmapSource.SetSource to construct the result image. For any other bits/pixel value (24, 32, 48 or 64), direct conversion is used and the result is the same as if the UseSetSource flag is not specified. If this flag is not specified, then BitmapSource.SetSource is not used and the toolkit will directly convert the Leadtools.RasterImage to a compatible System.Windows.Media.ImageSource. Specifying this flag in the LEADTOOLS for Silverlight toolkit may increase the performance of the RasterImageConverter.ConvertToSource method especially when converting 1 bits/pixel Leadtools.RasterImage objects. |
public static ImageSource ConvertToSource( RasterImage image, ConvertToSourceOptions options )
'Declaration Public Shared Function ConvertToSource( _ ByVal image As RasterImage, _ ByVal options As ConvertToSourceOptions _ ) As ImageSource
'Usage Dim image As RasterImage Dim options As ConvertToSourceOptions Dim value As ImageSource value = RasterImageConverter.ConvertToSource(image, options)
public: static ImageSource^ ConvertToSource( RasterImage^ image, ConvertToSourceOptions options )
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 only used by the LEADTOOLS for Silverlight toolkit. The WPF version of this flag is ignored and have no effect on the conversion operation. Use this option to use Silverlight native loading capabilities when converting a Leadtools.RasterImage into a System.Windows.Media.ImageSource. When this option is specified, one of the following will happen: If source Leadtools.RasterImage has a bits/pixel value of 1, 2, 3, 4, 5, 6, 7 or 8, the data will be converted to a PNG stream first then a call is made to BitmapSource.SetSource to construct the result image. If source bits/pixel value is 12 or 16, then the data will be converted to a JPEG stream first and then a call is made to BitmapSource.SetSource to construct the result image. For any other bits/pixel value (24, 32, 48 or 64), direct conversion is used and the result is the same as if the UseSetSource flag is not specified. If this flag is not specified, then BitmapSource.SetSource is not used and the toolkit will directly convert the Leadtools.RasterImage to a compatible System.Windows.Media.ImageSource. Specifying this flag in the LEADTOOLS for Silverlight toolkit may increase the performance of the RasterImageConverter.ConvertToSource method especially when converting 1 bits/pixel Leadtools.RasterImage objects. |
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.
Source Bits/Pixel | More Source Data | Compatible | Result 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 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.
The Microsoft Silverlight platform supports creating images as 32-bits per pixel only. So only a Leadtools.RasterImage with the following properties is considered Silverlight-compatible:
RasterImage.IsConventionalMemory is true, RasterImage.BitsPerPixel is 32 and RasterImage.Order is RasterByteOrder.Bgr.
Any Leadtools.RasterImage with any other combination with image color and data format will be converted in scanline by scanline bases.
You can also use the ConvertToSourceOptions.UseSetSource options to speed up the conversion process for incompatible image data as described above.
For more information refer to RasterImage and WPF/Silverlight.
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.ImageProcessing Imports Leadtools.ImageProcessing.Color Imports Leadtools.Windows.Media Private Sub ConvertToSourceExample(ByVal imageControl As System.Windows.Controls.Image) Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp") Using codecs As New RasterCodecs() ' Load the image Using rasterImage As RasterImage = codecs.Load(srcFileName, 0, CodecsLoadByteOrder.Bgr, 1, 1) ' Convert it to WPF/Silverlight ImageSource Dim source As System.Windows.Media.ImageSource = RasterImageConverter.ConvertToSource(rasterImage, ConvertToSourceOptions.None) ' Set it in the Image control imageControl.Source = source End Using End Using End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
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:\Users\Public\Documents\LEADTOOLS Images"; }
using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing; using Leadtools.Windows.Media; private void ConvertToSourceExample(System.Windows.Controls.Image imageControl) { string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; 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; } }
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.ImageProcessing Imports Leadtools.Windows.Media Imports Leadtools.ImageProcessing.Color Private Sub ConvertToSourceExample(ByVal imageControl As System.Windows.Controls.Image) Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path & "Image1.cmp" Dim codecs As RasterCodecs = New RasterCodecs() ' Load the image Using rasterImage As RasterImage = codecs.Load(srcFileName, 0, CodecsLoadByteOrder.Bgr, 1, 1) ' Convert it to WPF/Silverlight ImageSource Dim source As System.Windows.Media.ImageSource = RasterImageConverter.ConvertToSource(rasterImage, ConvertToSourceOptions.None) ' Set it in the Image control imageControl.Source = source End Using End Sub