Provides extra options for loading and saving RAW Data images.
Object Model
Syntax
Visual Basic (Declaration) | |
---|
Public Class CodecsRawOptions |
C# | |
---|
public class CodecsRawOptions |
C++/CLI | |
---|
public ref class CodecsRawOptions |
Example
Visual Basic | Copy Code |
---|
Private Structure RawData
Public Width As Integer
Public Height As Integer
Public BitsPerPixel As Integer
Public ViewPerspective As RasterViewPerspective
Public Order As RasterByteOrder
Public XResolution As Integer
Public YResolution As Integer
Public Offset As Integer
Public Padding As Boolean
Public ReverseBits As Boolean
End Structure
Private myRawData As RawData
Private Sub codecs_LoadInformation(ByVal sender As Object, ByVal e As CodecsLoadInformationEventArgs)
e.Format = RasterImageFormat.Raw
e.Width = myRawData.Width
e.Height = myRawData.Height
e.BitsPerPixel = myRawData.BitsPerPixel
e.XResolution = myRawData.XResolution
e.YResolution = myRawData.YResolution
e.Offset = myRawData.Offset
If myRawData.Padding Then
e.Pad4 = True
End If
e.Order = myRawData.Order
If myRawData.ReverseBits Then
e.LeastSignificantBitFirst = True
End If
e.ViewPerspective = myRawData.ViewPerspective
If e.BitsPerPixel <= 8 Then
Dim colors As Integer = 1 << e.BitsPerPixel
Dim palette As RasterColor() = New RasterColor(colors - 1) {}
Dim i As Integer = 0
Do While i < palette.Length
Dim val As Byte = CByte((i * 255) / (colors - 1))
palette(i) = New RasterColor(val, val, val)
i += 1
Loop
e.SetPalette(palette)
End If
End Sub
Public Sub CodecsRawOptionsExample()
RasterCodecs.Startup()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim image As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp")
codecs.Options.Raw.Save.Pad4 = True
codecs.Options.Raw.Save.ReverseBits = True
codecs.Options.Save.OptimizedPalette = True
Dim rawFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Test.raw"
codecs.Save(image, rawFileName, RasterImageFormat.Raw, 0)
myRawData = New RawData()
myRawData.Width = image.Width
myRawData.Height = image.Height
myRawData.BitsPerPixel = image.BitsPerPixel
myRawData.ViewPerspective = image.ViewPerspective
myRawData.Order = image.Order
myRawData.XResolution = image.XResolution
myRawData.YResolution = image.YResolution
myRawData.Offset = 0
myRawData.Padding = True
myRawData.ReverseBits = True
image.Dispose()
AddHandler codecs.LoadInformation, AddressOf codecs_LoadInformation
image = codecs.Load(rawFileName)
codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "raw.bmp", RasterImageFormat.Bmp, image.BitsPerPixel)
RemoveHandler codecs.LoadInformation, AddressOf codecs_LoadInformation
image.Dispose()
codecs.Dispose()
RasterCodecs.Shutdown()
End Sub |
C# | Copy Code |
---|
private struct RawData { public int Width; // Width of image public int Height; // Height of image public int BitsPerPixel; // Bits per pixel of image--if palettized, a gray palette is generated public RasterViewPerspective ViewPerspective; // View perspective of raw data (TopLeft, BottomLeft, etc) public RasterByteOrder Order; // Rgb or Bgr public int XResolution; // Horizontal resolution in DPI public int YResolution; // Vertical resolution in DPI public int Offset; // Offset into file where raw data begins public bool Padding; // true if each line of data is padded to four bytes public bool ReverseBits; // true if the bits of each byte are reversed } private RawData myRawData; private void codecs_LoadInformation(object sender, CodecsLoadInformationEventArgs e) { // Set the information e.Format = RasterImageFormat.Raw; e.Width = myRawData.Width; e.Height = myRawData.Height; e.BitsPerPixel = myRawData.BitsPerPixel; e.XResolution = myRawData.XResolution; e.YResolution = myRawData.YResolution; e.Offset = myRawData.Offset; if (myRawData.Padding) e.Pad4 = true; e.Order = myRawData.Order; if (myRawData.ReverseBits) e.LeastSignificantBitFirst = true; e.ViewPerspective = myRawData.ViewPerspective; // If image is palettized create a grayscale palette if (e.BitsPerPixel <= 8) { int colors = 1 << e.BitsPerPixel; RasterColor[] palette = new RasterColor[colors]; for (int i = 0; i < palette.Length; i++) { byte val = (byte)((i * 255) / (colors - 1)); palette[i] = new RasterColor(val, val, val); } e.SetPalette(palette); } } public void CodecsRawOptionsExample() { RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); // First, load a JPEG or CMP file RasterImage image = codecs.Load( LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"); // Save this image as RAW data // Set RAW options codecs.Options.Raw.Save.Pad4 = true; codecs.Options.Raw.Save.ReverseBits = true; codecs.Options.Save.OptimizedPalette = true; string rawFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Test.raw"; codecs.Save(image, rawFileName, RasterImageFormat.Raw, 0); // Save information about this image so we can use it to load the RAW file myRawData = new RawData(); myRawData.Width = image.Width; myRawData.Height = image.Height; myRawData.BitsPerPixel = image.BitsPerPixel; myRawData.ViewPerspective = image.ViewPerspective; myRawData.Order = image.Order; myRawData.XResolution = image.XResolution; myRawData.YResolution = image.YResolution; myRawData.Offset = 0; myRawData.Padding = true; myRawData.ReverseBits = true; // We dont need the image anymore image.Dispose(); // Now load this RAW image back // First subscribe to the LoadInformation event so we can set the image information codecs.LoadInformation += new EventHandler<CodecsLoadInformationEventArgs>(codecs_LoadInformation); // Load the image image = codecs.Load(rawFileName); codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "raw.bmp", RasterImageFormat.Bmp, image.BitsPerPixel); // Unsubscribe from the event codecs.LoadInformation -= new EventHandler<CodecsLoadInformationEventArgs>(codecs_LoadInformation); // Clean up image.Dispose(); codecs.Dispose(); RasterCodecs.Shutdown(); } |
Inheritance Hierarchy
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also