Rotates and flips the image data as necessary to achieve the desired view perspective.
Syntax
Parameters
- viewPerspective
- Desired view perspective.
Example
This example demonstrates the low-level methods for accessing 1-bit compressed image data.
It demonstrates the ability to get and put rows, and the ability to process rows in
buffer-to-buffer processing. The result of the function is an the first 50 lines are inverted.
Visual Basic | Copy Code |
---|
Public Sub GetRowCompressedExample()
RasterCodecs.Startup()
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.Options.Load.Compressed = True
Dim image As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "OCR1.TIF", 1, CodecsLoadByteOrder.Bgr, 1, 1)
If (image.ViewPerspective <> RasterViewPerspective.TopLeft) OrElse (image.ViewPerspective <> RasterViewPerspective.BottomLeft) Then
image.ChangeViewPerspective(RasterViewPerspective.TopLeft)
End If
Dim nRow As Integer = 500
Dim nYSize As Integer = 500
If image.ViewPerspective = RasterViewPerspective.BottomLeft Then
nRow = image.Height - nRow - nYSize
End If
Dim pBuffer As Byte() = New Byte(Convert.ToInt32((((image.Width + 31) And Not (31)) / 8)) * nYSize - 1) {}
Dim pRunBuffer As System.UInt16() = New System.UInt16(((image.Width + 3) * 2) * nYSize - 1) {}
If image.IsGlobalMemory Then
image.Access()
End If
image.GetRowCompressed(Nothing, pRunBuffer, 0, nRow, nYSize)
RasterRleCompressor.ExpandRows(pRunBuffer, pBuffer, 0, image.Width, nYSize)
Dim n As Integer = 0
Do While n < (image.BytesPerLine * nYSize)
pBuffer(n) = pBuffer(n) Xor Convert.ToByte(&HFF)
n += 1
Loop
RasterRleCompressor.CompressRows(pRunBuffer, pBuffer, 0, image.Width, nYSize)
image.SetRowCompressed(Nothing, pRunBuffer, 0, nRow, nYSize)
If image.IsGlobalMemory Then
image.Release()
End If
codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "IMAGE1_getrowcompresed.BMP", RasterImageFormat.Bmp, 0)
image.Dispose()
codecs.Dispose()
RasterCodecs.Shutdown()
End Sub |
C# | Copy Code |
---|
public void GetRowCompressedExample() { RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); // Load the bitmap, at 1 bit per pixel, compressed codecs.Options.Load.Compressed = true; RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "OCR1.TIF", 1, Leadtools.Codecs.CodecsLoadByteOrder.Bgr, 1, 1); // This example does not work with rotated view perspectives. if((image.ViewPerspective != RasterViewPerspective.TopLeft) || (image.ViewPerspective != RasterViewPerspective.BottomLeft)) image.ChangeViewPerspective(RasterViewPerspective.TopLeft); // Adjust the YOffset if the view perspective is bottom left. int nRow = 500; // first row to get. int nYSize = 500; // number of rows to get. if(image.ViewPerspective == RasterViewPerspective.BottomLeft) nRow = image.Height - nRow - nYSize; // Allocate the buffers. byte[] pBuffer = new byte[Convert.ToInt32((((image.Width + 31) & ~(31)) / 8)) * nYSize]; // Buffer to hold the expanded row. ushort[] pRunBuffer = new ushort[((image.Width + 3) * 2) * nYSize]; // Buffer to hold the compressed row. if(image.IsGlobalMemory) image.Access(); // Get the top nRow lines. image.GetRowCompressed(null, pRunBuffer, 0, nRow, nYSize); // Expand the compressed data. RasterRleCompressor.ExpandRows(pRunBuffer, pBuffer, 0, image.Width, nYSize); // Invert the data. for(int n = 0; n < (image.BytesPerLine * nYSize); n++) pBuffer[n] ^= 0xff; // Compress the inverted data. RasterRleCompressor.CompressRows(pRunBuffer, pBuffer, 0, image.Width, nYSize); // Put the inverted, compressed data back into the image. image.SetRowCompressed(null, pRunBuffer, 0, nRow, nYSize); if(image.IsGlobalMemory) image.Release(); codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "IMAGE1_getrowcompresed.BMP", RasterImageFormat.Bmp, 0); image.Dispose(); codecs.Dispose(); RasterCodecs.Shutdown(); } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also