Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.6.28
|
Leadtools Namespace : RasterImageResize Class |
public class RasterImageResize
'Declaration
Public Class RasterImageResize
'Usage
Dim instance As RasterImageResize
public sealed class RasterImageResize
function Leadtools.RasterImageResize()
public ref class RasterImageResize
This sample loads an image and uses the RasterImageResize class to resize it to half its size.
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; 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); }
using Leadtools; using Leadtools.Codecs; public async Task RasterImageResizeExample() { RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; string srcFileName = @"Assets\Image1.cmp"; string destFileName = @"Image1_RasterImageResize.bmp"; // Load the source image StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); ILeadStream loadStream = LeadStreamFactory.Create(loadFile); RasterImage srcImage = await codecs.LoadAsync(loadStream, 24, CodecsLoadByteOrder.Bgr, 1, 1); Assert.IsTrue(srcImage.BitsPerPixel == 24); 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()); Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)destImage.BytesPerLine); destImage.AccessData(); // 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.ReleaseData(); resize.Stop(); // save the destination image StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName); ILeadStream saveStream = LeadStreamFactory.Create(saveFile); await codecs.SaveAsync(destImage, saveStream, 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; } Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)e.Bytes); e.Image.AccessData(); e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes); e.Image.ReleaseData(); Marshal.Copy(buffer, 0, e.Buffer, e.Bytes); Debug.WriteLine("{0}, {1}", e.Row, e.Column); }
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