Leadtools.ImageProcessing.SpecialEffects Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
PuzzleEffectCommand Class
See Also  Members   Example 
Leadtools.ImageProcessing.SpecialEffects Namespace : PuzzleEffectCommand Class



Splits the image into square blocks and randomizes these blocks inside the image. This command is available in the Raster Pro and above toolkits.

Syntax

Visual Basic (Declaration)  
Public Class PuzzleEffectCommand 
   Inherits RasterCommand
   Implements IRasterCommand 
Visual Basic (Usage) Copy Code
Dim instance As PuzzleEffectCommand
C#  
public class PuzzleEffectCommand : RasterCommand, IRasterCommand  
C++/CLI  
public ref class PuzzleEffectCommand : public RasterCommand, IRasterCommand  

Example

Run the PuzzleEffectCommand on an image.

Visual Basic Copy Code
Public Sub PuzzleEffectCommandExample()
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.jpg")

   ' Prepare the command
   Dim command As PuzzleEffectCommand = New PuzzleEffectCommand
   command.XBlock = 10
   command.YBlock = 10
   command.Randomize = 0
   command.Flags = PuzzleEffectCommandFlags.Border Or PuzzleEffectCommandFlags.Shuffle Or PuzzleEffectCommandFlags.Count Or PuzzleEffectCommandFlags.Resize
   command.BorderColor = New RasterColor(0, 0, 0)

   ' Apply Puzzle Effect to this image.
   command.Run(leadImage)
   codecs.Save(leadImage, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24)

   RasterCodecs.Shutdown()
End Sub
C# Copy Code
public void PuzzleEffectCommandExample() 

   // Load an image 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.jpg"); 
 
   // Prepare the command 
   PuzzleEffectCommand command  = new PuzzleEffectCommand(); 
   command.XBlock      = 10; 
   command.YBlock      = 10; 
   command.Randomize   = 0; 
   command.Flags       = PuzzleEffectCommandFlags.Border | 
      PuzzleEffectCommandFlags.Shuffle | 
      PuzzleEffectCommandFlags.Count   | 
      PuzzleEffectCommandFlags.Resize; 
   command.BorderColor = new RasterColor(0,0,0); 
 
   // Apply Puzzle Effect to this image. 
   command.Run(image); 
   codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24); 
 
   RasterCodecs.Shutdown(); 
}

Remarks

  • This command can process the whole image or a region of the image. If the image has a region, the effect is applied only to the region.
  • Splits the image into a certain number of blocks according to the flags. If the PuzzleEffectCommandFlags.Size flag is set, then the image will be divided into blocks using the XBlock and YBlock properties (or the xblock and yblock parameters if you are using the appropriate Constructor) for the dimensions of the blocks. If the PuzzleEffectCommandFlags.Count flag is set, then the image will be divided into blocks using the xblock and ybBlock values for the number of blocks per row and number of blocks per column.
  • If the PuzzleEffectCommandFlags.Resize flag is not set, the edge blocks might have a different size than the inner blocks. This means the edge blocks will be manipulated differently than the inner blocks. The inner blocks that have the same dimensions will be shuffled around. The right edge blocks will be shuffled together and the bottom edge blocks will be shuffled together.
  • If the PuzzleEffectCommandFlags.Resize flag is set, the image will be resized to be sure that all blocks have the same dimensions. In this case, the edge blocks will not be treated differently than the inner blocks.
  • If the PuzzleEffectCommandFlags.Border flag is set, borders will be drawn with the color set in the BorderColor property (or the borderColor parameter if you are using the appropriate Constructor). If the PuzzleEffectCommandFlags.Border flag is not set, no borders will be drawn.
  • If the PuzzleEffectCommandFlags.Shuffle flag is not set, the blocks will appear in their original positions. If the PuzzleEffectCommandFlags.Shuffle flag is set then the blocks will appear randomized. The randomization process will be controlled by the Randomize property, or the randomize parameter if you are using the appropriate Constructor, as follows:
  • If the randomize value is 0, the command will select the starting point for the randomize process. You will get a different result every time you call the command with the randomize value = 0.
  • If the randomize value is greater than 0, the command will use this value as a starting point for the randomize process. You will get the same result every time you call the command with the same randomize value > 0.
  • Edge blocks that have the same size as inner blocks might move into the middle of the resulting image. Edge blocks with a different size than inner blocks will remain on the edge.
  • You must set the PuzzleEffectCommandFlags.Size flag or the Count flag (but not both) for the command to affect the image. If you set the flags to 0, the command leaves the image unchanged.
  • This command supports all bits/pixel supported by LEADTOOLS.
  • This command supports 12- and 16-bit grayscale and 48- and 64-bit color images. Support for 12- and 16-bit grayscale and 48- and 64-bit color images is available only in the Document/Medical toolkits.
  • This command does not support signed data images.
  • This command does not support 32-bit grayscale images.
For more information, refer to Applying Artistic Effects.

Inheritance Hierarchy

System.Object
   Leadtools.ImageProcessing.RasterCommand
      Leadtools.ImageProcessing.SpecialEffects.PuzzleEffectCommand

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also