Retrieves one or more rows of 1-bit compressed data from an image that has been loaded in its compressed format. 
Syntax
| Visual Basic (Usage) | 
 Copy Code | 
Dim instance As RasterImage
Dim workBuffer() As Byte
Dim runBuffer() As UShort
Dim runBufferOffset As Integer
Dim row As Integer
Dim lines As Integer
 
instance.GetRowCompressed(workBuffer, runBuffer, runBufferOffset, row, lines)
  | 
 
Parameters
- workBuffer 
 - Optional work buffer. Allocating the work buffer speeds processing if you call this method more than once, because if you do not allocate a work buffer, the method allocates and frees a temporary buffer each time it is called. bytes required = lines * ((Width + 3) * 2). Pass a null reference (Nothing in Visual Basic) to runBuffer if you do not want to use a work buffer.
 - runBuffer 
 - The output buffer, which will be filled with 1-bit compressed image data.
 - runBufferOffset 
 - Offset into runBuffer where the copy operation should start.
 - row 
 - The number of the row to retrieve. The first row is 0, and the last row is 1 less than the image height.
 - lines 
 - Number of rows to retrieve.
 
 
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