C#
VB
C++
Provides support for resizing images.
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;
using LeadtoolsExamples.Common;
public void RasterImageResizeExample()
{
string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
string destFileName = Path.Combine(ImagesPath.Path, "Image1_RasterImageResize.bmp");
using (RasterCodecs codecs = new RasterCodecs())
{
// Load the source image
using (RasterImage srcImage = codecs.Load(srcFileName))
{
// We will resize to half the original size
int destWidth = srcImage.Width / 2;
int destHeight = srcImage.Height / 2;
// Create the destination image
using (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 Handler
resize.Resize += new EventHandler<RasterImageResizeEventArgs>(resize_Resize);
byte[] buffer = new byte[destImage.BytesPerLine];
// Start the resize process
resize.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 one
for (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 image
codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24);
}
}
}
}
private void resize_Resize(object sender, RasterImageResizeEventArgs e)
{
// e.Row should ALWAYS be less than e.Image.Height
if (e.Row >= e.Image.Height)
{
e.Cancel = true; // abort the resize
return;
}
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);
}
Imports Leadtools
Imports Leadtools.Codecs
Public Sub RasterImageResizeExample()
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim 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 image
Dim srcImage As RasterImage = codecs.Load(srcFileName)
Dim resize As RasterImageResize = New RasterImageResize()
' Add Handler
AddHandler resize.Resize, AddressOf resize_Resize
' We will resize to half the original size
Dim destWidth As Integer = srcImage.Width \ 2
Dim destHeight As Integer = srcImage.Height \ 2
' Start the resize process
resize.Start(srcImage, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order,
srcImage.DitheringMethod, RasterSizeFlags.None, srcImage.GetPalette())
' Create the destination image
Dim 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 one
Dim row As Integer = 0
Do While row < destImage.Height
resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine)
destImage.SetRow(row, buffer, 0, destImage.BytesPerLine)
row += 1
Loop
resize.Stop()
' save the destination image
codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24)
' clean up
srcImage.Dispose()
destImage.Dispose()
End Sub
Private Sub resize_Resize(ByVal sender As Object, ByVal e As RasterImageResizeEventArgs)
' e.Row should ALWAYS be less than e.Image.Height
If e.Row >= e.Image.Height Then
e.Cancel = True ' abort the resize
Return
End If
Dim 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 Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
public void RasterImageResizeExample(RasterImage srcImage, Stream destStream)
{
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
RasterImageResize resize = new RasterImageResize();
// Add Handler
resize.Resize += new EventHandler<RasterImageResizeEventArgs>(resize_Resize);
// We will resize to half the original size
int destWidth = srcImage.Width / 2;
int destHeight = srcImage.Height / 2;
// Start the resize process
resize.Start(
srcImage,
destWidth,
destHeight,
srcImage.BitsPerPixel,
srcImage.Order,
srcImage.DitheringMethod,
RasterSizeFlags.None,
srcImage.GetPalette());
// Create the destination image
RasterImage destImage = new RasterImage(
RasterMemoryFlags.Conventional,
destWidth,
destHeight,
srcImage.BitsPerPixel,
srcImage.Order,
srcImage.ViewPerspective,
srcImage.GetPalette(),
null,
0);
byte[] buffer = new byte[destImage.BytesPerLine];
// get the rows for the resized image, one by one
for (int row = 0; row < destImage.Height; row++)
{
resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine);
destImage.SetRow(row, buffer, 0, destImage.BytesPerLine);
}
resize.Stop();
// save the destination image
codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24);
// clean up
srcImage.Dispose();
destImage.Dispose();
}
private void resize_Resize(object sender, RasterImageResizeEventArgs e)
{
// e.Row should ALWAYS be less than e.Image.Height
if (e.Row >= e.Image.Height)
{
e.Cancel = true; // abort the resize
return;
}
byte[] buffer = new byte[e.Bytes];
e.Image.Access();
e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes);
e.Image.Release();
Buffer.BlockCopy(buffer, 0, e.BufferArray, 0, e.Bytes);
Console.WriteLine("{0}, {1}", e.Row, e.Column);
}
Imports Leadtools
Imports Leadtools.Codecs
Public Sub RasterImageResizeExample(ByVal srcImage As RasterImage, ByVal destStream As Stream)
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim resize As RasterImageResize = New RasterImageResize()
' Add Handler
AddHandler resize.Resize, AddressOf resize_Resize
' We will resize to half the original size
Dim destWidth As Integer = srcImage.Width / 2
Dim destHeight As Integer = srcImage.Height / 2
' Start the resize process
resize.Start(srcImage, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.DitheringMethod, RasterSizeFlags.None, srcImage.GetPalette())
' Create the destination image
Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), Nothing, 0)
Dim buffer As Byte() = New Byte(destImage.BytesPerLine - 1) {}
' get the rows for the resized image, one by one
Dim row As Integer = 0
Do While row < destImage.Height
resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine)
destImage.SetRow(row, buffer, 0, destImage.BytesPerLine)
row += 1
Loop
resize.Stop()
' save the destination image
codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24)
' clean up
srcImage.Dispose()
destImage.Dispose()
End Sub
Private Sub resize_Resize(ByVal sender As Object, ByVal e As RasterImageResizeEventArgs)
' e.Row should ALWAYS be less than e.Image.Height
If e.Row >= e.Image.Height Then
e.Cancel = True ' abort the resize
Return
End If
Dim 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()
System.Buffer.BlockCopy(buffer, 0, e.BufferArray, 0, e.Bytes)
Console.WriteLine("{0}, {1}", e.Row, e.Column)
End Sub
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET