Retrieves one or more rows of image data from this RasterImage into a managed memory buffer.
public int GetRow(
int row,
byte[] buffer,
int bufferIndex,
int bufferCount
)
Public Overloads Function GetRow( _
ByVal row As Integer, _
ByVal buffer() As Byte, _
ByVal bufferIndex As Integer, _
ByVal bufferCount As Integer _
) As Integer
public int GetRow(
int row,
byte[] buffer,
int bufferIndex,
int bufferCount
)
- (NSInteger)getRow:(NSInteger)row
buffer:(unsigned char *)buffer
bufferCount:(unsigned long)count
error:(NSError **)error
public long getRow(
int row,
byte[] buffer,
int bufferIndex,
long bufferCount
)
function Leadtools.RasterImage.GetRow(Int32,Byte[],Int32,Int32)(
row ,
buffer ,
bufferIndex ,
bufferCount
)
public:
int GetRow(
int row,
array<byte>^ buffer,
int bufferIndex,
int bufferCount
)
row
The number of the row to retrieve. The first row is 0, and the last row is 1 less than the image height.
buffer
Buffer to hold the image data that this method gets. The size of this buffer must be large enough to hold the image data.
bufferIndex
The zero-based index into the buffer where the get operation should start.
bufferCount
The number of bytes in the row to retrieve. To get a full row, use the value in the BytesPerLine property
When getting less than full row, you must consider the bits per pixel. For a 1-bit image, each byte represents 8 pixels. For a 4-bit image, each byte represents 2 pixels. For an 8-bit image, each byte represents 1 pixel. For a 16-bit image, every 2 bytes represents one pixel. For 24-bit images, every three bytes represents one pixel. For a 32-bit image, every four bytes represents one pixel. For 48-bit images, every six bytes represents one pixel. For 64-bit images, every eight bytes represents one pixel.
You can use the BitsPerPixel property with integer math to calculate the number of bytes needed for a particular number of pixels. For example:
NumberOfBytes = Image.BitsPerPixel * (Image.Width * Image.Height + 7) / 8;
The number of bytes copied.
This method copies image data from the RasterImage object to a buffer that you specify. The data is copied exactly as it is stored in the image.
The image memory must be locked when you use this method. Normally, you can call Access to lock the memory before starting an operation that uses this method. Then call Release when the operation is finished.
Note: The data in the buffer will be padded to BytesPerLine.
Use the BytesPerLine property of the RasterImage object to determine the byte count of each line. Color order is determined by the Order property. This value can be RasterByteOrder.Rgb, RasterByteOrder.Bgr, RasterByteOrder.Gray or RasterByteOrder.RommRasterByteOrder.Gray is only valid for 12 and 16-bit grayscale images. Support for 12 and 16-bit grayscale images is only available in the Document/Medical Imaging editions.
This example uses Get/SetRow to flip the image data.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;
using Leadtools.Drawing;
using Leadtools.Controls;
using LeadtoolsExamples.Common;
using Leadtools.Svg;
public void GetRowTest()
{
RasterCodecs codecs = new RasterCodecs();
RasterImage image = codecs.Load(Path.Combine(ImagesPath.Path, "IMAGE1.CMP"));
byte[] row1 = new byte[image.BytesPerLine];
byte[] row2 = new byte[image.BytesPerLine];
if (image.IsGlobalMemory)
image.Access();
for (int y = 0; y < image.Height / 2; y++)
{
image.GetRow(y, row1, 0, row1.Length);
image.GetRow(image.Height - y - 1, row2, 0, row2.Length);
image.SetRow(y, row2, 0, row2.Length);
image.SetRow(image.Height - y - 1, row1, 0, row1.Length);
}
if (image.IsGlobalMemory)
image.Release();
codecs.Save(image, Path.Combine(ImagesPath.Path, "IMAGE1_getrow.BMP"), RasterImageFormat.Bmp, 0);
image.Dispose();
codecs.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Controls
Imports Leadtools.Dicom
Imports Leadtools.Drawing
Imports Leadtools.Svg
Public Sub GetRowTest()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP"))
Dim row1 As Byte() = New Byte(image.BytesPerLine - 1) {}
Dim row2 As Byte() = New Byte(image.BytesPerLine - 1) {}
If image.IsGlobalMemory Then
image.Access()
End If
Dim y As Integer = 0
Do While y < image.Height \ 2
image.GetRow(y, row1, 0, row1.Length)
image.GetRow(image.Height - y - 1, row2, 0, row2.Length)
image.SetRow(y, row2, 0, row2.Length)
image.SetRow(image.Height - y - 1, row1, 0, row1.Length)
y += 1
Loop
If image.IsGlobalMemory Then
image.Release()
End If
codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_getrow.BMP"), RasterImageFormat.Bmp, 0)
image.Dispose()
codecs.Dispose()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Dicom;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Examples;
using Leadtools.Windows.Media;
public void GetRowTest(RasterImage image, Stream destStream)
{
byte[] row1 = new byte[image.BytesPerLine];
byte[] row2 = new byte[image.BytesPerLine];
if (image.IsGlobalMemory)
image.Access();
for (int y = 0; y < image.Height / 2; y++)
{
image.GetRow(y, row1, 0, row1.Length);
image.GetRow(image.Height - y - 1, row2, 0, row2.Length);
image.SetRow(y, row2, 0, row2.Length);
image.SetRow(image.Height - y - 1, row1, 0, row1.Length);
}
if (image.IsGlobalMemory)
image.Release();
RasterCodecs codecs = new RasterCodecs();
codecs.Save(image, destStream, RasterImageFormat.Bmp, 0);
image.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Dicom
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Windows.Media
Public Sub GetRowTest(ByVal image As RasterImage, ByVal destStream As Stream)
Dim row1 As Byte() = New Byte(image.BytesPerLine - 1) {}
Dim row2 As Byte() = New Byte(image.BytesPerLine - 1) {}
If image.IsGlobalMemory Then
image.Access()
End If
Dim y As Integer = 0
Do While y < image.Height / 2
image.GetRow(y, row1, 0, row1.Length)
image.GetRow(image.Height - y - 1, row2, 0, row2.Length)
image.SetRow(y, row2, 0, row2.Length)
image.SetRow(image.Height - y - 1, row1, 0, row1.Length)
y += 1
Loop
If image.IsGlobalMemory Then
image.Release()
End If
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.Save(image, destStream, RasterImageFormat.Bmp, 0)
image.Dispose()
End Sub
Products |
Support |
Feedback: GetRow(Int32,Byte[],Int32,Int32) Method - Leadtools |
Introduction |
Help Version 19.0.2017.6.19
|
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.