←Select platform

SetRow(int,IntPtr,int) Method

Copies one or more rows of image data from an unmanaged memory buffer to this RasterImage.
public int SetRow( 
   int row, 
   IntPtr buffer, 
   int bufferCount 
public long setRow( 
  int row,  
  byte[] buffer,  
  long bufferCount 
int SetRow(  
   int row, 
   IntPtr buffer, 
   int bufferCount 
def SetRow(self,row,buffer,bufferCount): 


The number of the row to update. The first row is 0, and the last row is 1 less than the image height.

Pointer to unmanaged memory buffer containing the image data. The buffer should contain uncompressed data regardless of whether the image is compressed or not.

Number of bytes to set. Use the BytesPerLine property of this RasterImage to determine the byte count of each line.

Return Value

The number of bytes copied.


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.

You can use the BitsPerPixel property of the image to determine the number of bytes to set the  bufferCount parameter. If the image is 8-bit then each byte is an index to the palette. If the image is a 24-bit image, then each three bytes represents one pixel element. Color order is determined by the Order property of the RasterImage object. This value can be RasterByteOrder.Rgb, RasterByteOrder.Bgr, or RasterByteOrder.Romm.

Note: To calculate the correct size for a single row of image data:

  • Windows-based platforms: (((Width * BitsPerPixel) + 31) >> 3)) & ~3
  • Unix-based platforms (Linux, Android, OSX, iOS): (((Width * BitsPerPixel) + 7) / 8)

RasterByteOrder.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.

For more information, refer to Introduction to Image Processing With LEADTOOLS.

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 Leadtools.Svg; 
public void GetRowTest() 
   RasterCodecs codecs = new RasterCodecs(); 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP")); 
   byte[] row1 = new byte[image.BytesPerLine]; 
   byte[] row2 = new byte[image.BytesPerLine]; 
   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); 
   codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_getrow.BMP"), RasterImageFormat.Bmp, 0); 
static class LEAD_VARS 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.core.*; 
import leadtools.svg.*; 
import leadtools.imageprocessing.CloneCommand; 
import leadtools.imageprocessing.FillCommand; 
import leadtools.imageprocessing.FlipCommand; 
import leadtools.imageprocessing.GrayscaleCommand; 
import leadtools.imageprocessing.color.InvertCommand; 
import leadtools.imageprocessing.color.PosterizeCommand; 
public void getRowExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_getrow.BMP"); 
   RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "IMAGE1.CMP")); 
   byte[] row1 = new byte[image.getBytesPerLine()]; 
   byte[] row2 = new byte[image.getBytesPerLine()]; 
   for (int y = 0; y < image.getHeight() / 2; y++) { 
      image.getRow(y, row1, 0, row1.length); 
      image.getRow(image.getHeight() - y - 1, row2, 0, row2.length); 
      image.setRow(y, row2, 0, row2.length); 
      image.setRow(image.getHeight() - y - 1, row1, 0, row1.length); 
   // Save it 
   codecs.save(image, destFileName, RasterImageFormat.BMP, 0); 
   // Clean up 
   assertTrue("file unsuccessfully saved to " + destFileName, (new File(destFileName)).exists()); 
   System.out.printf("File saved successfully to %s%n", destFileName); 

Target Platforms

Help Version 23.0.2024.5.22
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.