- 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 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.
Specifiying 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.
Visual Basic (Declaration) | |
---|---|
Public Shared Function ConvertToSource( _ ByVal image As RasterImage, _ ByVal options As ConvertToSourceOptions _ ) As ImageSource |
Visual Basic (Usage) | Copy Code |
---|---|
Dim image As RasterImage Dim options As ConvertToSourceOptions Dim value As ImageSource value = RasterImageConverter.ConvertToSource(image, options) |
C# | |
---|---|
public static ImageSource ConvertToSource( RasterImage image, ConvertToSourceOptions options ) |
C++/CLI | |
---|---|
public: static ImageSource^ ConvertToSource( RasterImage^ image, ConvertToSourceOptions options ) |
Parameters
- 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 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.
Specifiying 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.
Return Value
An System.Windows.Media.ImageSource object representing the converted image.
This example will use LEADTOOLS to load a Leadtools.RasterImage, convert to a WPF/Silverlight System.Windows.Media.ImageSource and set it in a System.Windows.Controls.Image control.
Visual Basic | Copy Code |
---|---|
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 |
C# | Copy Code |
---|---|
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"; } |
SilverlightCSharp | Copy Code |
---|---|
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; } } |
SilverlightVB | Copy Code |
---|---|
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 |
Microsoft Windows Presentation Foundation (WPF)
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 |
Notes on gray scale images
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
Notes on alpha channel
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.
Microsoft Silverlight
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.
Target Platforms: Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family