- (BOOL)setUserData:(nullable unsigned char *)userDatauserDataSize:(unsigned long)userDataSizeerror:(NSError **)error
public void setUserData(byte data[],long size)
data
Pointer to the unmanaged memory buffer containing the image new data.
size
Number of bytes in data.
The data that you specify will not be copied, but instead will be referenced by the image until the image is disposed, or until you call this method again.
To set up a RasterImage object with unmanaged user data, call the /#ctor constructor passing RasterMemoryFlags.User to the flags parameter.
Some image processing commands, such as RotateCommand and ColorResolutionCommand, need to re-allocate the image data. If you create an image with RasterMemoryFlags.User, and pass it to these command, they will change the image to RasterMemoryFlags.Conventional and re-allocate memory. Your original memory will no longer be used.
You are responsible for managing the image data. Dispose will not free data.
This example uses GetPixelData and SetPixelData methods to swap the R and G values for a particular pixel.
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 SetUserDataExample(){RasterCodecs codecs = new RasterCodecs();string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "UserData.bmp");// Create an image with user defined dataint width = 40;int height = 40;int bitsPerPixel = 24;int size = width * height * 3;IntPtr data1 = Marshal.AllocHGlobal(size);// Load the imageRasterImage image = new RasterImage(RasterMemoryFlags.User,width,height,bitsPerPixel,RasterByteOrder.Bgr,RasterViewPerspective.TopLeft,null,IntPtr.Zero,0);// Get a pointer to the internal data and fill it with gray shadeslong dataSize = image.DataSize;byte[] buffer = new byte[dataSize];bool inc = true;byte value = 0;for (int i = 0; i < buffer.Length; i += 3){buffer[i + 0] = value;buffer[i + 1] = value;buffer[i + 2] = value;if (inc){if (value == 255){inc = false;value = 254;}elsevalue++;}else{if (value == 0){inc = true;value = 1;}elsevalue--;}}// Copy this buffer to the image dataMarshal.Copy(buffer, 0, data1, buffer.Length);// Set the user dataimage.SetUserData(data1, dataSize);// Save the imagecodecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);image.Dispose();Marshal.FreeHGlobal(data1);codecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
