Initializes a new
RemapHueCommand class object with default parameters.
Syntax
Visual Basic (Declaration) | |
---|
Public Function New() |
C# | |
---|
public RemapHueCommand() |
C++/CLI | |
---|
public:
RemapHueCommand(); |
Example
Run the RemapHueCommand on an image and change all green hues (and hues near green).
Visual Basic | Copy Code |
---|
Public Function INCREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer
Return ((x + 1) Mod Length)
End Function
Public Function DECREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer
Return ((x + (Length - 1)) Mod Length)
End Function
Public Function ADD_S2(ByVal x As Integer, ByVal y As Integer, ByVal Length As Integer) As Integer
Return ((x + y) Mod Length)
End Function
Public Sub RemapHueCommandConstructorExample()
RasterCodecs.Startup()
Dim codecs As New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim leadImage As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.jpg")
Dim Length As Integer
If (leadImage.BitsPerPixel >= 48) Then
Length = 65536
ElseIf (Not (leadImage.BitsPerPixel = 16 Or leadImage.BitsPerPixel = 12)) Then
Length = 256
ElseIf (IsNothing(leadImage.GetLookupTable) And leadImage.UseLookupTable) Then
Length = 256
Else
Length = (1 << leadImage.BitsPerPixel)
End If
Dim MaskTable() As Integer
Dim HueTable() As Integer
ReDim MaskTable(Length - 1)
ReDim HueTable(Length - 1)
Dim i As Integer
For i = 0 To Length - 1
MaskTable(i) = 0
HueTable(i) = i
Next
Dim hsvRef As RasterHsvColor = RasterHsvColor.FromRasterColor(New RasterColor(0, 255, 0))
Dim HueGreen As Integer
HueGreen = hsvRef.H
hsvRef = RasterHsvColor.FromRasterColor(New RasterColor(255, 128, 0))
Dim Change As Integer = hsvRef.H - HueGreen
Dim HueChange As Integer
If (Change > 0) Then
HueChange = Change
Else
HueChange = Change + Length - 1
End If
HueGreen = (HueGreen * (Length - 1)) \ 255
HueChange = (HueChange * (Length - 1)) \ 255
HueTable(HueGreen) = HueTable(HueGreen) + HueChange
MaskTable(HueGreen) = 1
i = INCREMENT_S2(HueGreen, Length)
Dim Count As Integer
For Count = (15 * (Length - 1)) \ 255 To 1 Step -1
i = INCREMENT_S2(i, Length)
HueTable(i) = ADD_S2(HueTable(i), HueChange, Length)
MaskTable(i) = 1
Next
i = DECREMENT_S2(HueGreen, Length)
For Count = (15 * (Length - 1)) \ 255 To 1 Step -1
i = DECREMENT_S2(i, Length)
HueTable(i) = ADD_S2(HueTable(i), HueChange, Length)
MaskTable(i) = 1
Next
Dim command As RemapHueCommand = New RemapHueCommand
command.Mask = MaskTable
command.HueTable = HueTable
command.SaturationTable = Nothing
command.ValueTable = Nothing
command.LookUpTableLength = Length
command.Run(leadImage)
codecs.Save(leadImage, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24)
RasterCodecs.Shutdown()
End Sub |
C# | Copy Code |
---|
public int INCREMENT_S2(int x, int Length) { return ((x+1)% Length); } public int DECREMENT_S2(int x, int Length) { return (( x + (Length - 1)) % Length); } public int ADD_S2(int x,int y, int Length) { return ((x+y)% Length); } public void RemapHueCommandConstructorExample() { // 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 int Length; if(image.BitsPerPixel >= 48) Length = 0x10000; else if(!(image.BitsPerPixel == 16 || image.BitsPerPixel == 12)) Length = 256; else if(image.GetLookupTable() != null && image.UseLookupTable) Length = 256; else Length = (1 << image.BitsPerPixel); //Allocate tables int[] MaskTable = new int[Length]; int[] HueTable = new int[Length]; //Initialize tables for (int i = 0; i < Length; i++) { MaskTable[i] = 0; HueTable[i] = i; } //Get the hue for green RasterHsvColor hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(0,255,0)); int HueGreen = hsvRef.H; //Obtain new hue hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(255, 128, 0)); int Change = (int)hsvRef.H - (int)HueGreen; int HueChange = (Change>0) ? (int)Change : (int)(Change + Length - 1); HueGreen *= (Length - 1)/255; HueChange *= (Length - 1)/255; //Set values in HueTable, MaskTable HueTable[HueGreen] = (HueTable[HueGreen] + HueChange); MaskTable[HueGreen] = 1; //set the hues near green (+/- 15) int Count = (15 * (Length - 1))/255; for (int i = INCREMENT_S2(HueGreen, Length); Count > 0; i = INCREMENT_S2(i, Length), Count--) { HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); MaskTable[i] = 1; } Count = (15 * (Length - 1)) / 255; for (int i = DECREMENT_S2(HueGreen, Length); Count > 0; i = DECREMENT_S2(i, Length), Count--) { HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); MaskTable[i] = 1; } RemapHueCommand command = new RemapHueCommand(); command.Mask = MaskTable; command.HueTable = HueTable; command.SaturationTable = null; command.ValueTable = null; command.LookUpTableLength = Length; command.Run(image); codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24); RasterCodecs.Shutdown(); } |
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