←Select platform

SetRow(int,IntPtr,int) Method

Summary
Copies one or more rows of image data from an unmanaged memory buffer to this RasterImage.
Syntax
C#
C++/CLI
Java
Python
public int SetRow( 
   int row, 
   IntPtr buffer, 
   int bufferCount 
) 
public long setRow( 
  int row,  
  byte[] buffer,  
  long bufferCount 
) 
public: 
int SetRow(  
   int row, 
   IntPtr buffer, 
   int bufferCount 
)  
def SetRow(self,row,buffer,bufferCount): 

Parameters

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

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

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

Remarks

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.

Example
C#
Java
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]; 
 
   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); 
   } 
   image.Release(); 
 
   codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_getrow.BMP"), RasterImageFormat.Bmp, 0); 
 
   image.Dispose(); 
   codecs.Dispose(); 
} 
 
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()]; 
 
   image.access(); 
 
   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); 
   } 
 
   image.release(); 
 
   // Save it 
   codecs.save(image, destFileName, RasterImageFormat.BMP, 0); 
 
   // Clean up 
   image.dispose(); 
   codecs.dispose(); 
 
   assertTrue("file unsuccessfully saved to " + destFileName, (new File(destFileName)).exists()); 
   System.out.printf("File saved successfully to %s%n", destFileName); 
} 
Requirements

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.