LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

RasterImageResizeクラス








メンバ 
サポートをイメージの大きさを変更するために提供します。
オブジェクトモデル
構文
public class RasterImageResize 
'Declaration
 
Public Class RasterImageResize 
'Usage
 
Dim instance As RasterImageResize
public sealed class RasterImageResize 
function Leadtools.RasterImageResize()
public ref class RasterImageResize 
解説
リサイズ操作の間、このクラスは、カラーオーダー、ピクセル当たりビットやパレットを変更することをサポートします。
サンプル

このサンプルはimageをロードして、半分のそのサイズにそれの大きさを変更するために、RasterImageResizeクラスを使用します。

Copy Code  
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
必要条件

ターゲットプラットホーム

参照

参照

RasterImageResizeメンバ
Leadtools名前空間