Maintains a predefined table to speed conversion with a user palette when using ColorResolutionCommand.
public class RasterUserMatchTable
Public Class RasterUserMatchTable
public ref class RasterUserMatchTable
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:
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.
This example changes the color resolution of a bitmap, using a user-defined palette and a match table for fast color matching.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using LeadtoolsExamples.Common;
public void RasterUserMatchTableExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
string destFileName = Path.Combine(ImagesPath.Path, "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();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Public Sub RasterUserMatchTableExample()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "RasterUserMatchTable.bmp")
' Load the image from disk
Dim image As RasterImage = codecs.Load(srcFileName)
' 64-color rainbow palette
Dim colors As RasterColor() = {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
Dim userMatchTable As RasterUserMatchTable = 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.
Dim command As ColorResolutionCommand = New ColorResolutionCommand(
ColorResolutionCommandMode.InPlace, 8, RasterByteOrder.Rgb,
RasterDitheringMethod.FloydStein,
ColorResolutionCommandPaletteFlags.UsePalette Or
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()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
c#[Silverlight C# Example]
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;
public void RasterUserMatchTableExample(RasterImage image, Stream destStream)
{
RasterCodecs codecs = new RasterCodecs();
// 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, destStream, RasterImageFormat.Bmp, 8);
// Clean up
image.Dispose();
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Public Sub RasterUserMatchTableExample(ByVal image As RasterImage, ByVal destStream As Stream)
Dim codecs As RasterCodecs = New RasterCodecs()
' 64-color rainbow palette
Dim colors As RasterColor() = {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
Dim userMatchTable As RasterUserMatchTable = 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.
Dim command As ColorResolutionCommand = New ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 8, RasterByteOrder.Rgb, RasterDitheringMethod.FloydStein, ColorResolutionCommandPaletteFlags.UsePalette Or
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, destStream, RasterImageFormat.Bmp, 8)
' Clean up
image.Dispose()
End Sub
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document