←Select platform

CombineFastCommand Class

Summary
Combines image data from two images (source and destination), letting you specify the areas to be combined and the operations to be performed when combining the data.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class CombineFastCommand : RasterCommand 
@interface LTCombineFastCommand : LTRasterCommand 
public class CombineFastCommand extends RasterCommand 
public ref class CombineFastCommand : public RasterCommand   
class CombineFastCommand(RasterCommand): 
Remarks

As an example, suppose you use SpatialFilterCommand class to apply an edge detection filter. You can then use this class to combine the resulting image with the original one to produce an image with hard edges.

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

The CombineFastCommand flags are divided into four groupings: source (SRC) flags, destination (DST) flags, operation (OP) flags, and resulting image (RES) flags. The flags apply only to the defined rectangles (not necessarily the whole image). The flags are applied in the following order:

  1. Operations on the source and destination rectangles are applied. These are implemented at the same time.
  2. Combining operations are performed.
  3. Operations on the resulting rectangle are applied.

You can use a bitwise OR ( ¦ ) to specify one flag from each group.

Group Flags
Flags that define treatment of the source rectangle None, SourceNot, Source0, Source1
Flags that define treatment of the destination rectangle DestinationNot, Destination0, Destination1
Flags that define the operation to use when combining the data OperationOr, OperationXor, OperationAdd, OperationSubtractSource, OperationSubtractDestination, OperationMultiply, OperationDivideSource, OperationDivideDestination, OperationAverage, OperationMinimum, OperationMaximum
Flags that define treatment of the resulting image rectangle ResultNot, Result0, Result1, SourceCopy

Certain flags when combined have no meaning:

  • Setting the flag (RES flags) to either CB_RES_0 or CB_RES_1 will render the rest of the flags useless.
  • Setting the SRC and DST flags to CB_SRC_0 and CB_DST_0 respectively, then the OP flags (the operation flags) will be useless.
  • Setting the SRC and DST flags to CB_SRC_1 and CB_DST_1 respectively, then the OP flags (the operation flags) will be useless.
  • Setting the flag (OP Flags) to CB_OP_ADD or CB_OP_OR or CB_OP_MAX, while setting the (SRC flags) to CB_SRC_1 will make the (DST flags) useless.
  • Setting the flag (OP Flags) to CB_OP_ADD or CB_OP_OR or CB_OP_MAX, while setting the (DST flags) to CB_SRC_1 will make the (SRC flags) useless.
  • Setting the flag (OP Flags) to CB_OP_AND or CB_OP_SUBDST or CB_OP_MIN, while setting the (SRC flags) to CB_SRC_0 will make the (DST flags) useless.
  • Setting the flag (OP Flags) to CB_OP_AND or CB_OP_SUBSRC or CB_OP_MIN, while setting the (DST flags) to CB_SRC_0 will make the (SRC flags) useless.

For more options, like specifying the color plane, use CombineCommand.

For more information, refer to Processing an Image.

Example

The following example loads two images and combines them using an "AND" operation.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
 
 
public void CombineFastCommandExample() 
{ 
	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, "CombineFastCommand.bmp"); 
 
	// Load the source images from disk 
	RasterImage srcImage = codecs.Load(srcFileName1); 
	RasterImage destImage = codecs.Load(srcFileName2); 
 
	// Combine them 
	CombineFastCommand command = new CombineFastCommand(); 
 
	// Specify a position in the destination image 
	command.DestinationRectangle = new LeadRect( 
	   destImage.Width / 8, 
	   destImage.Height / 8, 
	   destImage.Width, 
	   destImage.Height); 
	command.SourcePoint = LeadPoint.Empty; 
	command.DestinationImage = destImage; 
	command.Flags = CombineFastCommandFlags.OperationAdd | CombineFastCommandFlags.Destination0; 
	command.Run(srcImage); 
 
	// Save it to disk 
	codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24); 
 
	// Clean Up 
	destImage.Dispose(); 
	srcImage.Dispose(); 
	codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.*; 
 
 
public void combineFastCommandExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
   String srcFileName1 = combine(LEAD_VARS_IMAGES_DIR, "image1.cmp"); 
   String srcFileName2 = combine(LEAD_VARS_IMAGES_DIR, "image2.cmp"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "CombineFastCommand.bmp"); 
 
   // Load the source images from disk 
   RasterImage srcImage = codecs.load(srcFileName1); 
   RasterImage destImage = codecs.load(srcFileName2); 
 
   // Combine them 
   CombineFastCommand command = new CombineFastCommand(); 
 
   // Specify a position in the destination image 
   command.setDestinationRectangle(new LeadRect(destImage.getWidth() / 8, destImage.getHeight() / 8, 
         destImage.getWidth(), destImage.getHeight())); 
   command.setSourcePoint(LeadPoint.getEmpty()); 
   command.setDestinationImage(destImage); 
   command.setFlags( 
         CombineFastCommandFlags.OPERATION_ADD.getValue() | CombineFastCommandFlags.DESTINATION_0.getValue()); 
   command.run(srcImage); 
 
   // Save it to disk 
   codecs.save(destImage, destFileName, RasterImageFormat.BMP, 24); 
 
   assertTrue("file unsuccessfully saved to " + destFileName, (new File(destFileName)).exists()); 
   System.out.printf("File saved successfully to %s%n", destFileName); 
 
   // Clean Up 
   destImage.dispose(); 
   srcImage.dispose(); 
   codecs.dispose(); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.