public class RasterImageResize Public Class RasterImageResize public ref class RasterImageResize This class supports changing the color order, bits per pixel and/or palette, during the resize operation.
This sample loads an image and uses the RasterImageResize class to resize it to half its size.
using Leadtools;using Leadtools.Codecs;public void RasterImageResizeExample(){string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_RasterImageResize.bmp");using (RasterCodecs codecs = new RasterCodecs()){// Load the source imageusing (RasterImage srcImage = codecs.Load(srcFileName)){// We will resize to half the original sizeint destWidth = srcImage.Width / 2;int destHeight = srcImage.Height / 2;// Create the destination imageusing (RasterImage destImage = new RasterImage(RasterMemoryFlags.Conventional,destWidth,destHeight,srcImage.BitsPerPixel,srcImage.Order,srcImage.ViewPerspective,srcImage.GetPalette(),IntPtr.Zero,0)){RasterImageResize resize = new RasterImageResize();// Add Event Handlerresize.Resize += new EventHandler<RasterImageResizeEventArgs>(resize_Resize);byte[] buffer = new byte[destImage.BytesPerLine];// Start the resize processresize.Start(srcImage,destWidth,destHeight,srcImage.BitsPerPixel,srcImage.Order,srcImage.DitheringMethod,RasterSizeFlags.None,srcImage.GetPalette());destImage.Access();// get the rows for the resized image, one by onefor (int row = 0; row < destImage.Height; row++){resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine);destImage.SetRow(row, buffer, 0, destImage.BytesPerLine);}destImage.Release();resize.Stop();// Save the destination imagecodecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24);}}}}private void resize_Resize(object sender, RasterImageResizeEventArgs e){// e.Row should ALWAYS be less than e.Image.Heightif (e.Row >= e.Image.Height){e.Cancel = true; // abort the resizereturn;}byte[] buffer = new byte[e.Bytes];e.Image.Access();e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes);e.Image.Release();Marshal.Copy(buffer, 0, e.Buffer, e.Bytes);Console.WriteLine("{0}, {1}", e.Row, e.Column);}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";}
Imports LeadtoolsImports Leadtools.CodecsPublic Sub RasterImageResizeExample()Dim codecs As RasterCodecs = New RasterCodecs()codecs.ThrowExceptionsOnInvalidImages = TrueDim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_RasterImageResize.bmp")' Load the source imageDim srcImage As RasterImage = codecs.Load(srcFileName)Dim resize As RasterImageResize = New RasterImageResize()' Add HandlerAddHandler resize.Resize, AddressOf resize_Resize' We will resize to half the original sizeDim destWidth As Integer = srcImage.Width \ 2Dim destHeight As Integer = srcImage.Height \ 2' Start the resize processresize.Start(srcImage, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order,srcImage.DitheringMethod, RasterSizeFlags.None, srcImage.GetPalette())' Create the destination imageDim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight,srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), IntPtr.Zero, 0)Dim buffer As Byte() = New Byte(destImage.BytesPerLine - 1) {}' get the rows for the resized image, one by oneDim row As Integer = 0srcImage.Access()destImage.Access()Do While row < destImage.Heightresize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine)destImage.SetRow(row, buffer, 0, destImage.BytesPerLine)row += 1LoopsrcImage.Release()destImage.Release()resize.Stop()' save the destination imagecodecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24)' clean upsrcImage.Dispose()destImage.Dispose()End SubPrivate Sub resize_Resize(ByVal sender As Object, ByVal e As RasterImageResizeEventArgs)' e.Row should ALWAYS be less than e.Image.HeightIf e.Row >= e.Image.Height Thene.Cancel = True ' abort the resizeReturnEnd IfDim buffer As Byte() = New Byte(e.Bytes - 1) {}e.Image.Access()e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes)e.Image.Release()Marshal.Copy(buffer, 0, e.Buffer, e.Bytes)Console.WriteLine("{0}, {1}", e.Row, e.Column)End SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"End Class
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
