←Select platform

PuzzleEffectCommand Class

Summary

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

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-bit and 16-bit grayscale and 48-bit and 64-bit color images. Support for 12-bit and 16-bit grayscale and 48-bit 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.

Example

Run the PuzzleEffectCommand on an image.

C#
VB
WinRT C#
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.SpecialEffects 
 
<TestMethod()> _ 
Public Sub PuzzleEffectCommandExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "ImageProcessingDemo\\Image2.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, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.SpecialEffects; 
 
public void PuzzleEffectCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"ImageProcessingDemo\Image2.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, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24); 
 
} 
 
static class LEAD_VARS 
{ 
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.SpecialEffects; 
 
public async Task PuzzleEffectCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
   string srcFileName = @"Assets\Image1.cmp"; 
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); 
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)); 
 
   // 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 = RasterColorHelper.Create(0,0,0); 
 
   // Apply Puzzle Effect to this image. 
   command.Run(image); 
 
   string destFileName = @"result.bmp"; 
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName); 
   await codecs.SaveAsync(image, LeadStreamFactory.Create(saveFile), RasterImageFormat.Bmp, 24); 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.ImageProcessing.SpecialEffects Assembly
Click or drag to resize