VintaSoft Imaging .NET SDK 12.4: Documentation for .NET developer
Vintasoft.Imaging Namespace / VintasoftImage Class / CreateImagesBasedOnSourceImageDecoders(VintasoftImage[]) Method
Syntax Remarks Example Requirements SeeAlso
In This Topic
    CreateImagesBasedOnSourceImageDecoders(VintasoftImage[]) Method (VintasoftImage)
    In This Topic
    Creates a new array of images that based on decoders of source images.
    Syntax
    'Declaration
    
    Public Shared Function CreateImagesBasedOnSourceImageDecoders( _
    ByVal sourceImages
    An array of the source images.
    () As VintasoftImage _
    ) As VintasoftImage[]
    public static VintasoftImage[] CreateImagesBasedOnSourceImageDecoders(
    VintasoftImage[] sourceImages
    )
    public: static VintasoftImage*[] CreateImagesBasedOnSourceImageDecoders(
    VintasoftImage*[]* sourceImages
    )
    public:
    static VintasoftImage^[] CreateImagesBasedOnSourceImageDecoders(
    array<VintasoftImage^>^ sourceImages
    )

    Parameters

    sourceImages
    An array of the source images.

    Return Value

    An array of images based on decoders of the source images.
    Remarks

    This method can be used when the same array of VintasoftImage objects must be used with different decoding (color management) settings, for example, the same images must be viewed and printed with different color management settings.

    Created images must be destroyed using the Dispose method when images are not necessary any more.

    Example

    This C#/VB.NET code shows how to view the same images in 2 viewers with different color management settings.

    
    ''' <summary>
    ''' View images in 2 image viewers with different output ICC profiles.
    ''' </summary>
    Public Shared Sub ViewImages(images As Vintasoft.Imaging.VintasoftImage(), viewer1 As Vintasoft.Imaging.UI.ImageViewer, outputRgbIccProfile1 As String, viewer2 As Vintasoft.Imaging.UI.ImageViewer, outputRgbIccProfile2 As String)
        AddImagesToViewer(images, viewer1, outputRgbIccProfile1)
        AddImagesToViewer(images, viewer2, outputRgbIccProfile2)
    End Sub
    
    ''' <summary>
    ''' Creates new images using decoders of source images and
    ''' shows new images in specified viewer with specified output ICC profile.
    ''' </summary>
    Private Shared Sub AddImagesToViewer(sourceImages As Vintasoft.Imaging.VintasoftImage(), viewer As Vintasoft.Imaging.UI.ImageViewer, outputRgbIccProfile As String)
        ' create ICC profile
        Dim profile As New Vintasoft.Imaging.ColorManagement.Icc.IccProfile(outputRgbIccProfile)
        ' create new images based on decoder(s) of source images
        Dim images1 As Vintasoft.Imaging.VintasoftImage() = Vintasoft.Imaging.VintasoftImage.CreateImagesBasedOnSourceImageDecoders(sourceImages)
        For i As Integer = 0 To images1.Length - 1
            Dim sourceImage As Vintasoft.Imaging.VintasoftImage = sourceImages(i)
            Dim newImage As Vintasoft.Imaging.VintasoftImage = images1(i)
            ' set new color management settions
            newImage.DecodingSettings = New Vintasoft.Imaging.Codecs.Decoders.DecodingSettings()
            If sourceImage.DecodingSettings IsNot Nothing AndAlso sourceImage.DecodingSettings.ColorManagement IsNot Nothing Then
                newImage.DecodingSettings.ColorManagement = New Vintasoft.Imaging.ColorManagement.ColorManagementDecodeSettings(sourceImage.DecodingSettings.ColorManagement)
            Else
                newImage.DecodingSettings.ColorManagement = New Vintasoft.Imaging.ColorManagement.ColorManagementDecodeSettings()
            End If
            newImage.DecodingSettings.ColorManagement.OutputRgbProfile = profile
        Next
        ' add new images to the viewer
        viewer.Images.AddRange(images1)
    End Sub
    
    
    
    /// <summary>
    /// View images in 2 image viewers with different output ICC profiles.
    /// </summary>
    public static void ViewImages(
        Vintasoft.Imaging.VintasoftImage[] images,
        Vintasoft.Imaging.UI.ImageViewer viewer1, string outputRgbIccProfile1,
        Vintasoft.Imaging.UI.ImageViewer viewer2, string outputRgbIccProfile2)
    {
        AddImagesToViewer(images, viewer1, outputRgbIccProfile1);
        AddImagesToViewer(images, viewer2, outputRgbIccProfile2);
    }
    
    /// <summary>
    /// Creates new images using decoders of source images and
    /// shows new images in specified viewer with specified output ICC profile.
    /// </summary>
    private static void AddImagesToViewer(
        Vintasoft.Imaging.VintasoftImage[] sourceImages, 
        Vintasoft.Imaging.UI.ImageViewer viewer, string outputRgbIccProfile)
    {
        // create ICC profile
        Vintasoft.Imaging.ColorManagement.Icc.IccProfile profile = 
            new Vintasoft.Imaging.ColorManagement.Icc.IccProfile(outputRgbIccProfile);
        // create new images based on decoder(s) of source images
        Vintasoft.Imaging.VintasoftImage[] images1 = 
            Vintasoft.Imaging.VintasoftImage.CreateImagesBasedOnSourceImageDecoders(sourceImages);
        for (int i = 0; i < images1.Length; i++)
        {
            Vintasoft.Imaging.VintasoftImage sourceImage = sourceImages[i];
            Vintasoft.Imaging.VintasoftImage newImage = images1[i];
            // set new color management settions
            newImage.DecodingSettings = new Vintasoft.Imaging.Codecs.Decoders.DecodingSettings();
            if (sourceImage.DecodingSettings != null &&
                sourceImage.DecodingSettings.ColorManagement != null)
                newImage.DecodingSettings.ColorManagement =
                    new Vintasoft.Imaging.ColorManagement.ColorManagementDecodeSettings(
                        sourceImage.DecodingSettings.ColorManagement);
            else
                newImage.DecodingSettings.ColorManagement = 
                    new Vintasoft.Imaging.ColorManagement.ColorManagementDecodeSettings();
            newImage.DecodingSettings.ColorManagement.OutputRgbProfile = profile;
        }
        // add new images to the viewer
        viewer.Images.AddRange(images1);
    }
    
    

    Requirements

    Target Platforms: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also