public int Width { get; }
@property (nonatomic, assign, readonly) NSInteger width;
public int getWidth();
public:
property int Width {
int get();
}
Width # get (RasterImageAllocateData)
The width of the RasterImage object being created in pixels.
You cannot change the width, height, bits/pixel, order or size of the RasterImage object being created. You can however inspect and change the memory model (conventional, disk, tiled, etc.).
using Leadtools;
using Leadtools.Codecs;
private void SetRasterImageAllocateCallbackExample()
{
try
{
// Set the LEADTOOLS temporary directory to a value we can watch easily
RasterDefaults.TemporaryDirectory = Path.Combine(LEAD_VARS.ImagesDir, @"Temp\LEADTOOLS");
// Install a callback to notify us when LEADTOOLS images are created
// IMPORTANT: SetRasterImageAllocateCallback is global and not thread safe. It will fire
// for each image being created after this point, so if the action you are performing in the
// callback requires synchronzation, add the required code. For what this sample is trying
// to accomplish, our solution is perfectly safe and no synchronization is needed.
RasterDefaults.SetRasterImageAllocateCallback(new RasterImageAllocateCallback(MyRasterImageAllocateCallback));
// We want conventional memory and nothing else
RasterMemoryFlags flags = RasterMemoryFlags.Conventional | RasterMemoryFlags.NoDisk | RasterMemoryFlags.NoTiled;
// Create a huge RasterImage
using (RasterImage img = new RasterImage(flags, 20000, 20000, 24, RasterByteOrder.Bgr, RasterViewPerspective.TopLeft, null, null, 0))
{
// Rotate it 90 degrees, this will have a memory size greater than the default
// size of conventional memory and cause LEADTOOLS to switch to a disk or tiled memory
// model. In the callback below, we instruct LEADTOOLS to only use conventional memory so the command
// will throw an out of memory exception as expected.
Leadtools.ImageProcessing.RotateCommand cmd = new Leadtools.ImageProcessing.RotateCommand();
cmd.Angle = 90 * 100;
// Exception will be thrown inside here: No Memory since our callback
// will be called and we instruct LEADTOOLS to not use disk
cmd.Run(img);
}
}
catch (Exception ex)
{
// Show the error
Console.WriteLine(ex.Message);
}
}
private static RasterExceptionCode MyRasterImageAllocateCallback(RasterImageAllocateData data)
{
Console.WriteLine("Trying to allocate:");
Console.WriteLine(" Memory: {0}", data.MemoryFlags);
Console.WriteLine(" Size: {0} by {1}", data.Width, data.Height);
Console.WriteLine(" BPP: {0}, Order: {1}", data.BitsPerPixel, data.Order);
Console.WriteLine(" Size: {0}", data.Size);
// Note, all values beside MemoryFlags are read only and cannot be changed
// We want conventional memory and nothing else, so change this
data.MemoryFlags = RasterMemoryFlags.Conventional | RasterMemoryFlags.NoTiled | RasterMemoryFlags.NoDisk;
// If you remove the code above, the toolkit will most probably switch to disk or tiled memory model
// and creating this huge image will be successful, however, we only want conventional
// memory in this example, and out of memory exception is the expected behavior of this
// example
// Let LEADTOOLS continue with creating the image process
// You can return any other value to abort
return RasterExceptionCode.Success;
}
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