Visual Basic (Declaration) | |
---|---|
Public Class RasterBufferResize |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As RasterBufferResize |
C# | |
---|---|
public class RasterBufferResize |
C++/CLI | |
---|---|
public ref class RasterBufferResize |
This example will load an image, resizes each line then saves the resized image back to disk.
Visual Basic | Copy Code |
---|---|
Public Sub RasterBufferResizeExample() 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_resized.bmp") ' Load the source image Dim srcImage As RasterImage = codecs.Load(srcFileName) Dim destWidth As Integer = srcImage.Width \ 2 Dim destHeight As Integer = srcImage.Height \ 2 ' 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) ' allocate buffer for one scanline from source image Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1) {} ' resize it Dim bufferResize As RasterBufferResize = New RasterBufferResize() ' Initialize the resize process. bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height) srcImage.Access() destImage.Access() ' Current destination row number Dim destRow As Integer = 0 Dim i As Integer = 0 Do While i < srcImage.Height ' 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 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() ' Save the destination image codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24) ' Clean up srcImage.Dispose() destImage.Dispose() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class |
C# | Copy Code |
---|---|
public void RasterBufferResizeExample() { RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; string srcFileName = Path.Combine(LEAD_VARS.ImagesDir,"Image1.cmp"); string destFileName = Path.Combine(LEAD_VARS.ImagesDir,"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(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; } |
SilverlightCSharp | Copy Code |
---|---|
public void RasterBufferResizeExample(RasterImage srcImage, Stream destStream) { RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; 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(), null, 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, destStream, RasterImageFormat.Bmp, 24); // Clean up srcImage.Dispose(); destImage.Dispose(); } |
SilverlightVB | Copy Code |
---|---|
Public Sub RasterBufferResizeExample(ByVal srcImage As RasterImage, ByVal destStream As Stream) Dim codecs As RasterCodecs = New RasterCodecs() codecs.ThrowExceptionsOnInvalidImages = True Dim destWidth As Integer = srcImage.Width / 2 Dim destHeight As Integer = srcImage.Height / 2 ' Create the destination image Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), Nothing, 0) ' allocate buffer for one scanline from source image Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1){} ' resize it Dim bufferResize As RasterBufferResize = New RasterBufferResize() ' Initialize the resize process. bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height) srcImage.Access() destImage.Access() ' Current destination row number Dim destRow As Integer = 0 Dim i As Integer = 0 Do While i < srcImage.Height ' 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 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() ' Save the destination image codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24) ' Clean up srcImage.Dispose() destImage.Dispose() End Sub |
System.Object
Leadtools.RasterBufferResize
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7