LEADTOOLS (Leadtools assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
RasterCommandProcessor Class
See Also  Members  
Leadtools.ImageProcessing Namespace : RasterCommandProcessor Class



Batch processes a collection of RasterCommand object on a collection of RasterImage objects. Supported in Silverlight, Windows Phone 7

Object Model

RasterCommandProcessor Class

Syntax

Visual Basic (Declaration) 
Public Class RasterCommandProcessor 
Visual Basic (Usage)Copy Code
Dim instance As RasterCommandProcessor
C# 
public class RasterCommandProcessor 
C++/CLI 
public ref class RasterCommandProcessor 

Example

This example will load multiple images from disk and executes multiple image proecessing commands on them before saving the result into a single multi-page tif file.

Visual BasicCopy Code
Public Sub RasterCommandProcessorExample()
      Dim codecs As RasterCodecs = New RasterCodecs()

      Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "RasterCommandProcessor.tif")

      ' create a raster command processor
      Dim processor As RasterCommandProcessor = New RasterCommandProcessor()

      ' add the commands (color-res to 8 then flip)
      processor.Commands.Add(New ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 8, RasterByteOrder.Rgb, RasterDitheringMethod.None, ColorResolutionCommandPaletteFlags.Optimized, Nothing))
      processor.Commands.Add(New FlipCommand(False))

      ' load the images
      Const imageCount As Integer = 2
      For i As Integer = 0 To imageCount - 1
         Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, String.Format("Image{0}.cmp", i + 1))
         processor.Images.Add(codecs.Load(srcFileName))
      Next i

      ' run the commands
      AddHandler processor.Progress, AddressOf processor_Progress
      processor.Run()
      RemoveHandler processor.Progress, AddressOf processor_Progress

      ' save the result image as multi-page tif file
      If File.Exists(destFileName) Then
         File.Delete(destFileName)
      End If

      For i As Integer = 0 To imageCount - 1
         codecs.Save(processor.Images(i), destFileName, RasterImageFormat.Tif, 8, 1, 1, -1, CodecsSavePageMode.Append)
      Next i

      ' clean up
      For i As Integer = 0 To imageCount - 1
         processor.Images(i).Dispose()
      Next i

   End Sub

   Private Sub processor_Progress(ByVal sender As Object, ByVal e As RasterCommandProcessorProgressEventArgs)
      ' show information about the command
      Console.Write("Running command {0} ({1}) of {2}, ", e.CommandNumber, e.Command, e.TotalCommands)
      Console.Write("On image {0} ({1} by {2} pixels) of {3}, ", e.ImageNumber, e.Image.Width, e.Image.Height, e.TotalImages)
      Console.WriteLine("{0}% done", e.Percent)
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
public void RasterCommandProcessorExample()
   {
      RasterCodecs codecs = new RasterCodecs();

      string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "RasterCommandProcessor.tif");

      // create a raster command processor
      RasterCommandProcessor processor = new RasterCommandProcessor();

      // add the commands (color-res to 8 then flip)
      processor.Commands.Add(new ColorResolutionCommand(
         ColorResolutionCommandMode.InPlace,
         8,
         RasterByteOrder.Rgb,
         RasterDitheringMethod.None,
         ColorResolutionCommandPaletteFlags.Optimized,
         null));
      processor.Commands.Add(new FlipCommand(false));

      // load the images
      const int imageCount = 4;
      for(int i = 0; i < imageCount; i++)
      {
         string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, string.Format("Image{0}.cmp", (i + 1)%2+1));
         processor.Images.Add(codecs.Load(srcFileName));
      }

      // run the commands
      processor.Progress += new EventHandler<RasterCommandProcessorProgressEventArgs>(processor_Progress);
      processor.Run();
      processor.Progress -= new EventHandler<RasterCommandProcessorProgressEventArgs>(processor_Progress);

      // save the result image as multi-page tif file
      if(File.Exists(destFileName))
         File.Delete(destFileName);

      for(int i = 0; i < imageCount; i++)
         codecs.Save(
            processor.Images[i],
            destFileName,
            RasterImageFormat.Tif,
            8,
            1,
            1,
            -1,
            CodecsSavePageMode.Append);

      // clean up
      for(int i = 0; i < imageCount; i++)
         processor.Images[i].Dispose();

   }

   void processor_Progress(object sender, RasterCommandProcessorProgressEventArgs e)
   {
      // show information about the command
      Console.Write("Running command {0} ({1}) of {2}, ", e.CommandNumber, e.Command, e.TotalCommands);
      Console.Write("On image {0} ({1} by {2} pixels) of {3}, ", e.ImageNumber, e.Image.Width, e.Image.Height, e.TotalImages);
      Console.WriteLine("{0}% done", e.Percent);
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
public void RasterCommandProcessorExample(RasterImage image1, RasterImage image2, RasterImage image3, Stream destStream)
{
   RasterCodecs codecs = new RasterCodecs();
   // create a raster command processor
   RasterCommandProcessor processor = new RasterCommandProcessor();

   // add the commands (color-res to 8 then flip)
   processor.Commands.Add(new ColorResolutionCommand(
      ColorResolutionCommandMode.InPlace,
      8,
      RasterByteOrder.Rgb,
      RasterDitheringMethod.None,
      ColorResolutionCommandPaletteFlags.Optimized,
      null));
   processor.Commands.Add(new FlipCommand(false));

   // add the images
   processor.Images.Add(image1);
   processor.Images.Add(image2);
   processor.Images.Add(image3);

   // run the commands
   processor.Progress += new EventHandler<RasterCommandProcessorProgressEventArgs>(processor_Progress);
   processor.Run();
   processor.Progress -= new EventHandler<RasterCommandProcessorProgressEventArgs>(processor_Progress);

   // save the result image as multi-page tif file
   for(int i = 0; i < 3; i++)
      codecs.Save(
         processor.Images[i],
         destStream,
         RasterImageFormat.Tif,
         8,
         1,
         1,
         -1,
         CodecsSavePageMode.Append);

   // clean up
   for(int i = 0; i < 3; i++)
      processor.Images[i].Dispose();
}

void processor_Progress(object sender, RasterCommandProcessorProgressEventArgs e)
{
   // show information about the command
   Console.Write("Running command {0} ({1}) of {2}, ", e.CommandNumber, e.Command, e.TotalCommands);
   Console.Write("On image {0} ({1} by {2} pixels) of {3}, ", e.ImageNumber, e.Image.Width, e.Image.Height, e.TotalImages);
   Debug.WriteLine("{0}% done", e.Percent);
}
SilverlightVBCopy Code
Public Sub RasterCommandProcessorExample(ByVal image1 As RasterImage, ByVal image2 As RasterImage, ByVal image3 As RasterImage, ByVal destStream As Stream)
   Dim codecs As RasterCodecs = New RasterCodecs()
   ' create a raster command processor
   Dim processor As RasterCommandProcessor = New RasterCommandProcessor()

   ' add the commands (color-res to 8 then flip)
   processor.Commands.Add(New ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 8, RasterByteOrder.Rgb, RasterDitheringMethod.None, ColorResolutionCommandPaletteFlags.Optimized, Nothing))
   processor.Commands.Add(New FlipCommand(False))

   ' add the images
   processor.Images.Add(image1)
   processor.Images.Add(image2)
   processor.Images.Add(image3)

   ' run the commands
   AddHandler processor.Progress, AddressOf processor_Progress
   processor.Run()
   RemoveHandler processor.Progress, AddressOf processor_Progress

   ' save the result image as multi-page tif file
   For i As Integer = 0 To 2
      codecs.Save(processor.Images(i), destStream, RasterImageFormat.Tif, 8, 1, 1, -1, CodecsSavePageMode.Append)
   Next i

   ' clean up
   For i As Integer = 0 To 2
      processor.Images(i).Dispose()
   Next i
End Sub

Private Sub processor_Progress(ByVal sender As Object, ByVal e As RasterCommandProcessorProgressEventArgs)
   ' show information about the command
   Console.Write("Running command {0} ({1}) of {2}, ", e.CommandNumber, e.Command, e.TotalCommands)
   Console.Write("On image {0} ({1} by {2} pixels) of {3}, ", e.ImageNumber, e.Image.Width, e.Image.Height, e.TotalImages)
   Debug.WriteLine("{0}% done", e.Percent)
End Sub

Remarks

Use the RasterCommandProcessor class to perform "batch" image processing, where one or more commands are executed on one or more images.

Inheritance Hierarchy

System.Object
   Leadtools.ImageProcessing.RasterCommandProcessor

Requirements

Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7

See Also