LEADTOOLS (Leadtools assembly)
LEAD Technologies, Inc

CombineWarpCommand Class

Example 





Members 
Combines image data from the source image (the slave) and the destination image (the master), using a perspective warp. .NET support WinRT support
Object Model
CombineWarpCommand ClassRasterImage ClassLeadRect Structure
Syntax
public class CombineWarpCommand : RasterCommand, IRasterCommand  
'Declaration
 
Public Class CombineWarpCommand 
   Inherits RasterCommand
   Implements IRasterCommand 
'Usage
 
Dim instance As CombineWarpCommand
public sealed class CombineWarpCommand : IRasterCommand  
function Leadtools.ImageProcessing.CombineWarpCommand()
public ref class CombineWarpCommand : public RasterCommand, IRasterCommand  
Remarks

You can warp the entire source image, or a portion of the source image. To warp a portion of the source image, set SourceRectangle accordingly. To warp the entire source image, set the following:

            CombineWarp.Command.SourceRectangle = new LeadRect(0, 0, RasterImage.Width, RasterImage.Height);
            

The warp area in the destination image is specified in SetDestinationPoints. The polygon specified in SetDestinationPoints must:

If either of these conditions is false, this class will throw an exception.

The ordering of the points in SetDestinationPoints can affect the resulting warp. For example, if the source image is the following:

Warp

then ordering the points in SetDestinationPoints as shown below results in the following warp:

Warp

while ordering the points in SetDestinationPoints as shown below, results in the following warp:

Warp

The CombineWarpCommand works by combining the image in the DestinationImage property with the image passed to the RasterCommand.Run method. The DestinationImage will then hold the result of the combine operation..

For more information, refer to Introduction to Image Processing With LEADTOOLS.

This command does not support signed data images.

Example
 
Public Sub CombineWarpCommandExample()
      Dim codecs As RasterCodecs = New RasterCodecs()

      Dim srcFileName1 As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
      Dim srcFileName2 As String = Path.Combine(LEAD_VARS.ImagesDir, "Image2.cmp")
      Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "CombineWarpCommand.bmp")

      ' Load the source images from disk
      Dim parentImage As RasterImage = codecs.Load(srcFileName1)
      Dim childImage As RasterImage = codecs.Load(srcFileName2)

      ' Combine them
      Dim command As CombineWarpCommand = New CombineWarpCommand()

      Dim destPoints As LeadPoint() = {New LeadPoint(100, 100), New LeadPoint(200, 75), New LeadPoint(200, 250), New LeadPoint(100, 200)}

      command.DestinationImage = parentImage
      command.SetDestinationPoints(destPoints)
      command.SourceRectangle = New LeadRect(0, 0, childImage.Width, childImage.Height)
      command.Flags = CombineWarpCommandFlags.Bilinear
      command.Run(childImage)

      ' Save it to disk
      codecs.Save(parentImage, destFileName, RasterImageFormat.Bmp, 24)

      ' Clean Up
      parentImage.Dispose()
      childImage.Dispose()
   End Sub

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

      string srcFileName1 = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
      string srcFileName2 = Path.Combine(LEAD_VARS.ImagesDir, "Image2.cmp");
      string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "CombineWarpCommand.bmp");

      // Load the source images from disk
      RasterImage parentImage = codecs.Load(srcFileName1);
      RasterImage childImage = codecs.Load(srcFileName2);

      // Combine them
      CombineWarpCommand command = new CombineWarpCommand();

      LeadPoint[] destPoints =
      {
         new LeadPoint(100,100),
         new LeadPoint(200,75),
         new LeadPoint(200,250),
         new LeadPoint(100,200)
      };

      command.DestinationImage = parentImage;
      command.SetDestinationPoints(destPoints);
      command.SourceRectangle = new LeadRect(0, 0, childImage.Width, childImage.Height);
      command.Flags = CombineWarpCommandFlags.Bilinear;
      command.Run(childImage);

      // Save it to disk
      codecs.Save(parentImage, destFileName, RasterImageFormat.Bmp, 24);

      // Clean Up
      parentImage.Dispose();
      childImage.Dispose();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
RasterCommandExamples.prototype.CombineWarpCommandExample = function () {
    Tools.SetLicense();
    with (Leadtools) {
        with (Leadtools.Codecs) {
            with (Leadtools.ImageProcessing) {
                var codecs = new RasterCodecs();

                var srcFileName1 = "Assets\\sample1.cmp";
                var srcFileName2 = "Assets\\sample2.cmp";
                var destFileName = "CombineWarpCommand.bmp";
                var parentImage;
                var childImage;

                // Load the source images from disk
                return Tools.AppInstallFolder().getFileAsync(srcFileName1).then(function (loadFile) {
                    return codecs.loadAsync(LeadStreamFactory.create(loadFile))
                })
            .then(function (img1) {
                parentImage = img1;

                return Tools.AppInstallFolder().getFileAsync(srcFileName2)
            })
            .then(function (loadFile) {
                return codecs.loadAsync(LeadStreamFactory.create(loadFile))
            })
            .then(function (img2) {
                childImage = img2;

                // Combine them
                var command = new CombineWarpCommand();

                var destPoints =
                [
                    LeadPointHelper.create(100, 100),
                    LeadPointHelper.create(200, 75),
                    LeadPointHelper.create(200, 250),
                    LeadPointHelper.create(100, 200)
                ];

                command.destinationImage = parentImage;
                command.setDestinationPoints(destPoints);
                command.sourceRectangle = LeadRectHelper.create(0, 0, childImage.width, childImage.height);
                command.flags = CombineWarpCommandFlags.bilinear;
                command.run(childImage);

                // Save it to disk
                return Tools.AppLocalFolder().createFileAsync(destFileName)
            })
            .then(function (saveFile) {
                return codecs.saveAsync(parentImage, LeadStreamFactory.create(saveFile), RasterImageFormat.bmp, 24)
            })
            .then(function () {

                // Clean Up
                parentImage.close();
                childImage.close();
                codecs.close()
            });
            }
        }
    }
}
[TestMethod]
public async Task CombineWarpCommandExample()
{
   RasterCodecs codecs = new RasterCodecs();
   string srcFileName1 = @"Assets\sample1.cmp";
   string srcFileName2 = @"Assets\sample2.cmp";
   string destFileName = @"CombineWarpCommand.bmp";

   // Load the source images from disk
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName1);
   RasterImage parentImage = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));

   loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName2);
   RasterImage childImage = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));

   // Combine them
   CombineWarpCommand command = new CombineWarpCommand();

   LeadPoint[] destPoints =
   {
      LeadPointHelper.Create(100,100),
      LeadPointHelper.Create(200,75),
      LeadPointHelper.Create(200,250),
      LeadPointHelper.Create(100,200)
   };

   command.DestinationImage = parentImage;
   command.SetDestinationPoints(destPoints);
   command.SourceRectangle = LeadRectHelper.Create(0, 0, childImage.Width, childImage.Height);
   command.Flags = CombineWarpCommandFlags.Bilinear;
   command.Run(childImage);

   // Save it to disk
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   await codecs.SaveAsync(parentImage, LeadStreamFactory.Create(saveFile), RasterImageFormat.Bmp, 24);

   // Clean Up
   parentImage.Dispose();
   childImage.Dispose();
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

CombineWarpCommand Members
Leadtools.ImageProcessing Namespace

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.