Provides support for resizing image data buffers.
Syntax
Visual Basic (Declaration) | |
---|
Public Class RasterBufferResize |
C# | |
---|
public class RasterBufferResize |
C++/CLI | |
---|
public ref class RasterBufferResize |
Example
This example will load an image, resizes each line then saves the resized image back to disk.
Visual Basic | Copy Code |
---|
Public Sub RasterBufferResizeExample()
RasterCodecs.Startup()
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"
Dim destFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_resized.bmp"
Dim srcImage As RasterImage = codecs.Load(srcFileName)
Dim destWidth As Integer = srcImage.Width \ 2
Dim destHeight As Integer = srcImage.Height \ 2
Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), IntPtr.Zero, 0)
Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1) {}
Dim bufferResize As RasterBufferResize = New RasterBufferResize()
bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height)
srcImage.Access()
destImage.Access()
Dim destRow As Integer = 0
Dim i As Integer = 0
Do While i < srcImage.Height
srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine)
bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel)
Dim j As Integer = 0
Do While j < bufferResize.CopyRepetitions
destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3)
destRow += 1
j += 1
Loop
i += 1
Loop
destImage.Release()
srcImage.Release()
bufferResize.Stop()
codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24)
srcImage.Dispose()
destImage.Dispose()
RasterCodecs.Shutdown()
End Sub |
C# | Copy Code |
---|
public void RasterBufferResizeExample() { RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; string destFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_resized.bmp"; // Load the source image RasterImage srcImage = codecs.Load(srcFileName); int destWidth = srcImage.Width / 2; int destHeight = srcImage.Height / 2; // Create the destination image RasterImage destImage = new RasterImage( RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), IntPtr.Zero, 0); // allocate buffer for one scanline from source image byte[] scanLine = new byte[srcImage.BytesPerLine]; // resize it RasterBufferResize bufferResize = new RasterBufferResize(); // Initialize the resize process. bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height); srcImage.Access(); destImage.Access(); // Current destination row number int destRow = 0; for(int i = 0; i < srcImage.Height; i++) { // Get a scanline from the source image and resize it srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine); bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel); // Output as many or as few rows as ResizeBuffer supplies for(int j = 0; j < bufferResize.CopyRepetitions; j++) { destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3); destRow++; } } destImage.Release(); srcImage.Release(); bufferResize.Stop(); // Save the destination image codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24); // Clean up srcImage.Dispose(); destImage.Dispose(); RasterCodecs.Shutdown(); } |
Inheritance Hierarchy
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also