LEADTOOLS ナレッジベース

[RasterImageViewer] A5サイズの画像を2枚合成してA4サイズの画像を作成できますか?

以下の手順にて作成できます。

  1. A4サイズのベース画像を作成します。
  2. A5サイズの画像をCombineFastCommandクラスを使用して合成します。

同様の手順でA4サイズの画像を2枚合成してA3サイズの画像を作成できます。

サンプルコード(VB.NET)

Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing


' 画像をロード/保存するためのRasterCodecsオブジェクト
Private codecs As RasterCodecs

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' RasterCodecsオブジェクトを初期化します。
  codecs = New RasterCodecs
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim tempImage1 As RasterImage = codecs.Load("A5Size_1.tif")
  Dim tempImage2 As RasterImage = codecs.Load("A5Size_2.tif")

  ' 画像をビューワ1に設定します。
  RasterImageViewer1.Image = tempImage1
  ' 画像をビューワ2に設定します。
  RasterImageViewer2.Image = tempImage2

  RasterImageViewer1.SizeMode = RasterPaintSizeMode.Fit
  RasterImageViewer2.SizeMode = RasterPaintSizeMode.Fit
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  ' A5の画像を合成するためのA4サイズのベース画像を作成します。
  Dim baseImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, _
          RasterImageViewer1.Image.Width + RasterImageViewer2.Image.Width, _
          RasterImageViewer1.Image.Height, _
          1, _
          RasterByteOrder.Bgr, _
          RasterViewPerspective.TopLeft, _
          Nothing, _
          Nothing, _
          0)

  ' ビットマップを白で塗りつぶします。
  Dim command1 As FillCommand = New FillCommand
  command1.Color = New Leadtools.RasterColor(255, 255, 255)
  command1.Run(baseImage)

  ' ビューワ3に設定します。
  RasterImageViewer3.Image = baseImage
  RasterImageViewer3.SizeMode = RasterPaintSizeMode.Fit

  ' ビューワ1の画像を合成します。
  Dim command2 As CombineFastCommand = New CombineFastCommand
  command2.DestinationRectangle = New LeadRect(0, _
                    0, _
                    RasterImageViewer1.Image.Width, _
                    RasterImageViewer1.Image.Height)
  command2.SourcePoint = New LeadPoint(0, 0)
  command2.DestinationImage = RasterImageViewer3.Image
  command2.Flags = CombineFastCommandFlags.SourceNot
  command2.Run(RasterImageViewer1.Image)

  ' ビューワ2の画像を合成します。
  Dim command3 As CombineFastCommand = New CombineFastCommand
  command3.DestinationRectangle = New LeadRect(RasterImageViewer1.Image.Width, _
                    0, _
                    RasterImageViewer2.Image.Width, _
                    RasterImageViewer2.Image.Height)
  command3.SourcePoint = New LeadPoint(0, 0)
  command3.DestinationImage = RasterImageViewer3.Image
  command3.Flags = CombineFastCommandFlags.SourceNot
  command3.Run(RasterImageViewer2.Image)

  ' 結果画像を保存します。
  codecs.Save(RasterImageViewer3.Image, "A4.tif", RasterImageFormat.CcittGroup4, 1)
End Sub

サンプルコード(C#)

using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;


// 画像をロード/保存するためのRasterCodecsオブジェクト
private RasterCodecs codecs;

private void Form1_Load(object sender, System.EventArgs e)
{
  // RasterCodecsオブジェクトを初期化します。
  codecs = new RasterCodecs();
}

private void Button1_Click(object sender, System.EventArgs e)
{
  RasterImage tempImage1 = codecs.Load("A5Size_1.tif");
  RasterImage tempImage2 = codecs.Load("A5Size_2.tif");

  // 画像をビューワ1に設定します。
  rasterImageViewer1.Image = tempImage1;
  // 画像をビューワ2に設定します。
  rasterImageViewer2.Image = tempImage2;

  rasterImageViewer1.SizeMode = RasterPaintSizeMode.Fit;
  rasterImageViewer2.SizeMode = RasterPaintSizeMode.Fit;
}

private void Button2_Click(object sender, System.EventArgs e)
{
  // A5の画像を合成するためのA4サイズのベース画像を作成します。
  RasterImage baseImage = new RasterImage(RasterMemoryFlags.Conventional,
          rasterImageViewer1.Image.Width + rasterImageViewer2.Image.Width,
          rasterImageViewer1.Image.Height,
          1,
          RasterByteOrder.Bgr,
          RasterViewPerspective.TopLeft,
          null,
          null,
          0);

  // ビットマップを白で塗りつぶします。
  FillCommand command1 = new FillCommand();
  command1.Color = new Leadtools.RasterColor(255, 255, 255);
  command1.Run(baseImage);

  // ビューワ3に設定します。
  rasterImageViewer3.Image = baseImage;
  rasterImageViewer3.SizeMode = RasterPaintSizeMode.Fit;

  // ビューワ1の画像を合成します。
  CombineFastCommand command2 = new CombineFastCommand();
  command2.DestinationRectangle = new LeadRect(0,
                    0,
                    rasterImageViewer1.Image.Width,
                    rasterImageViewer1.Image.Height);
  command2.SourcePoint = new LeadPoint(0, 0);
  command2.DestinationImage = rasterImageViewer3.Image;
  command2.Flags = CombineFastCommandFlags.SourceNot;
  command2.Run(rasterImageViewer1.Image);

  // ビューワ2の画像を合成します。
  CombineFastCommand command3 = new CombineFastCommand();
  command3.DestinationRectangle = new LeadRect(rasterImageViewer1.Image.Width,
                    0,
                    rasterImageViewer2.Image.Width,
                    rasterImageViewer2.Image.Height);
  command3.SourcePoint = new LeadPoint(0, 0);
  command3.DestinationImage = rasterImageViewer3.Image;
  command3.Flags = CombineFastCommandFlags.SourceNot;
  command3.Run(rasterImageViewer2.Image);

  // 結果画像を保存します。
  codecs.Save(rasterImageViewer3.Image, "A4.tif", RasterImageFormat.CcittGroup4, 1);
}

 

関連情報

0 コメント

記事コメントは受け付けていません。