←Select platform

RasterUserMatchTable Class

Summary
Maintains a predefined table to speed conversion with a user palette when using ColorResolutionCommand.
Syntax
C#
C++/CLI
Python
public class RasterUserMatchTable 
public ref class RasterUserMatchTable  
class RasterUserMatchTable: 
Remarks

Use the RasterUserMatchTable class to create a predefined table to speed conversion with a user palette when using ColorResolutionCommand.

You should use the following sequence:

  1. Create a new instance of the RasterUserMatchTable class
  2. Call the RasterUserMatchTable.Create method to create the table.
  3. Call the RasterUserMatchTable.Use method to make this the current table. (Having this as a separate method allows you to save tables in files and get the one you need, without creating it again.)
  4. Run ColorResolutionCommand with ColorResolutionCommandPaletteFlags.UsePalette or ColorResolutionCommandPaletteFlags.FastMatch set in the ColorResolutionCommand.PaletteFlags property.
  5. Call the Unuse method when the table is no longer needed.

The completed table is a 32K array of integers. On a 32-bit system, it occupies 128K bytes of memory. Creation of the table is a slow, memory-intensive process that is useful only if you are using your own palette more than once. For example, you may want to create the table once, save it to a file, and ship that file with your application.

Example

This example changes the color resolution of a bitmap, using a user-defined palette and a match table for fast color matching.

C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
 
 
public void RasterUserMatchTableExample() 
{ 
	RasterCodecs codecs = new RasterCodecs(); 
 
	string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
	string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "RasterUserMatchTable.bmp"); 
 
	// Load the image from disk 
	RasterImage image = codecs.Load(srcFileName); 
 
	// 64-color rainbow palette 
	RasterColor[] colors = 
	{ 
	new RasterColor(0, 0, 0), new RasterColor(0, 0, 85), new RasterColor(0, 0, 170), new RasterColor(0, 0, 255), 
	new RasterColor(85, 0, 0), new RasterColor(85, 0, 85), new RasterColor(85, 0, 170), new RasterColor(85, 0, 255), 
	new RasterColor(170, 0, 0), new RasterColor(170, 0, 85), new RasterColor(170, 0, 170), new RasterColor(170, 0, 255), 
	new RasterColor(255, 0, 0), new RasterColor(255, 0, 85), new RasterColor(255, 0, 170), new RasterColor(255, 0, 255), 
	new RasterColor(0, 85, 0), new RasterColor(0, 85, 85), new RasterColor(0, 85, 170), new RasterColor(0, 85, 255), 
	new RasterColor(85, 85, 0), new RasterColor(85, 85, 85), new RasterColor(85, 85, 170), new RasterColor(85, 85, 255), 
	new RasterColor(170, 85, 0), new RasterColor(170, 85, 85), new RasterColor(170, 85, 170), new RasterColor(170, 85, 255), 
	new RasterColor(255, 85, 0), new RasterColor(255, 85, 85), new RasterColor(255, 85, 170), new RasterColor(255, 85, 255), 
	new RasterColor(0, 170, 0), new RasterColor(0, 170, 85), new RasterColor(0, 170, 170), new RasterColor(0, 170, 255), 
	new RasterColor(85, 170, 0), new RasterColor(85, 170, 85), new RasterColor(85, 170, 170), new RasterColor(85, 170, 255), 
	new RasterColor(170, 170, 0), new RasterColor(170, 170, 85), new RasterColor(170, 170, 170), new RasterColor(170, 170, 255), 
	new RasterColor(255, 170, 0), new RasterColor(255, 170, 85), new RasterColor(255, 170, 170), new RasterColor(255, 170, 255), 
	new RasterColor(0, 255, 0), new RasterColor(0, 255, 85), new RasterColor(0, 255, 170), new RasterColor(0, 255, 255), 
	new RasterColor(85, 255, 0), new RasterColor(85, 255, 85), new RasterColor(85, 255, 170), new RasterColor(85, 255, 255), 
	new RasterColor(170, 255, 0), new RasterColor(170, 255, 85), new RasterColor(170, 255, 170), new RasterColor(170, 255, 255), 
	new RasterColor(255, 255, 0), new RasterColor(255, 255, 85), new RasterColor(255, 255, 170), new RasterColor(255, 255, 255) 
 }; 
 
	// Create and set the user match table 
	RasterUserMatchTable userMatchTable = new RasterUserMatchTable(); 
	userMatchTable.Create(colors); 
	userMatchTable.Use(); 
 
	// Change the color resolution using the new palette. Note that the user match table 
	// is makes your code faster only if you use it more than once. It is included here only  
	// to show how it can be coded. 
 
	ColorResolutionCommand command = new ColorResolutionCommand( 
	   ColorResolutionCommandMode.InPlace, 
	   8, 
	   RasterByteOrder.Rgb, 
	   RasterDitheringMethod.FloydStein, 
	   ColorResolutionCommandPaletteFlags.UsePalette | ColorResolutionCommandPaletteFlags.FastMatch, 
	   colors); 
	command.Run(image); 
 
	// Free the user match table when it is no longer needed 
	userMatchTable.Unuse(); 
 
	// Save the image back to disk 
	codecs.Save(image, destFileName, RasterImageFormat.Bmp, 8); 
 
	// Clean up 
	image.Dispose(); 
	codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

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

Leadtools Assembly

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