ニュートン メニュー

株式会社ニュートン

マイクロソフトパートナー

体験版ダウンロード

製品案内

ライセンスパック

ライセンスについて

カスタマイズ受付

製品購入ガイド









直販ショップ!
ニュートンストアで購入
コンポーネントソースで購入
SE Shopで購入

優待販売・
 キャンペーン情報

ユーザサービス
〔サポートページ〕

サポート体制

お知らせ
・ニュースリリース
・イベント出展
・製品関連記事

会社概要

個人情報保護方針

お問い合わせ先

SSL GMOグローバルサインのサイトシール

ニュートンホーム Q&A
ImageKit.NET3

イメージ処理コンポーネント
ImageKit®.NET3

このページは、ImageKit.NET3 のユーザ様より寄せられたご質問の一部とその回答を掲載しております。


【ImageKit.NET3 Q&A 一覧】

QNo.

Q.質問 日付
A.回答
19

Q. 64bit OS で、VisualStudio のプラットフォームターゲットを「x64」にしてビルドしようとすると、「"LC.exe" はコード -1 を伴って終了しました。」というエラーが発生します。

2015/07/24

A. この現象は、以下の条件がすべてそろった場合に発生します。
  ・開発環境が64bit OS
  ・開発環境に Framework4.5 以降がインストールされている
  ・Visual Studio 2010 以降を使用
  ・プラットフォームターゲットを「x64」にしてビルド

これは、ImageKit.NET3 のアセンブリは32ビットと64ビット両環境用が共通となっており、32ビット版の LC.exe を使用する必要がありますが、以上の条件で、64ビット版の LC.exe が使用されるためです。
この問題は、以下の内容に起因するものです。
http://support.microsoft.com/kb/2783939/ja
この現象を回避するには、上記ページに記載されている「解決方法」を実行してください。
(環境変数またはプロジェクトファイル (.vbproj または .csproj) にて、「DisableOutOfProcTaskHost」の値に「1」に設定する)  

18

Q. アノテーションオブジェクトを使用せず、ImageKit コントロールや読み込んだイメージに図形やテキストを描画するにはどうすればよいですか。

2014/12/18

A. 次の例を参考にしてください。

1.コントロールにテキストを描画する場合
VB.NET :
Dim g As Graphics = ImageKit1.CreateGraphics()
Dim drawFont As Font = new Font("Arial", 16)
Dim drawBrush As SolidBrush = new SolidBrush(Color.Black)
g.DrawString("Sample Text", drawFont, drawBrush, 150.0, 50.0)
g.Dispose()
※イメージを再描画するとテキストは消えます。

C# :
Graphics g = imageKit1.CreateGraphics();
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
g.DrawString("Sample Text", drawFont, drawBrush, 150.0F, 50.0F);
g.Dispose();
※イメージを再描画するとテキストは消えます。

2.イメージにテキストを描画する場合
VB.NET :
Dim bitCount As Integer = ImageKit1.BitCount
If bitCount <= 8 Then
  ImageKit1.Effect.SourceMask = Nothing
  ImageKit1.Effect.ConvertColor(24, False, False, 128)
End If
Dim newImage As Image = ImageKit1.Image
Dim newGraphics As Graphics = Graphics.FromImage(newImage)
Dim drawFont As Font = New Font("Arial", 16)
Dim drawBrush As SolidBrush = New SolidBrush(Color.Black)
newGraphics.DrawString("Sample Text", drawFont, drawBrush, 150.0, 50.0)
newGraphics.Dispose()
ImageKit1.Image = newImage
If bitCount <= 8 Then
  ImageKit1.Effect.ConvertColor(bitCount, False, False, 128)
End If
C# :
int bitCount = imageKit1.BitCount;
if (bitCount <= 8)
{
  imageKit1.Effect.SourceMask = null;
  imageKit1.Effect.ConvertColor(24, false, false, 128);
}
Image newImage = imageKit1.Image;
Graphics newGraphics = Graphics.FromImage(newImage);
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
newGraphics.DrawString("Sample Text", drawFont, drawBrush, 150.0F, 50.0F);
newGraphics.Dispose();
imageKit1.Image = newImage;
if (bitCount <= 8)
  imageKit1.Effect.ConvertColor(bitCount, false, false, 128);
imageKit1.Refresh();

※テキスト以外の場合は、上記の DrawString に代えて .NET Framework 標準の System.Drawing.Graphic クラスの Draw〜 メソッドと必要な設定をご使用ください。
 

17

Q. ImageKit.NET2 で作成したプロジェクトのコードはそのままで、ImageKit 関連の参照設定を ImageKit.NET3 のものに変更するだけでビルドできますか。

2014/11/04

A. ImageKit.NET3 は ImageKit.NET2 からの上位互換性を考慮して設計してありますので、ほとんどの場合、参照設定を差し換えるだけでビルドできます。(ごく一部、コードの変更が必要な場合もあります。)ただし、licenses.licx ファイルの内容には注意が必要です。
おもな変更点につきましてはこちらもご参照ください。
 

16

Q. Administrator 権限を持つユーザアカウントで Windows にログインしている場合に、ImageKit のライセンス認証が正しく完了しているのに、開発環境で ImageKit コントロールなどを貼り付けようとすると「ライセンスが無効」のエラーが発生します。

2014/10/27

A. ImageKit.NET3 では、ライセンス認証とは別に、製品版としての情報をインストール時にレジストリに書き込んでいます。ところが、一般ユーザアカウントで Administrator 権限を付与してもレジストリに情報を書き込むことはできないため、当該のエラーが発生します。
従ってこの場合は、ImageKit.NET3 のインストールも管理者として行ってください。
具体的には、Setup.exe を右クリックして「管理者として実行」でインストールするか、ImageKitNET3.msi を使用される場合は、コマンドラインから「管理者用インストール オプション」を使用してインストールしてください。構文は以下のとおりです。
msiexec /i ImageKitNET3.msi

(※開発時には、開発環境も管理者として起動してください。)
 

15

Q. 64bit OS で、VisualStudio2005 を使用してビルドしようとすると、「"LC.exe" はコード -1 を伴って終了しました。」というエラーが発生します。

2014/10/27

A. 64bit OS で Visual Studio 2005 を使用する場合、以下の内容に該当する可能性があります。
http://support.microsoft.com/kb/913961/ja
この場合は、上記ページに記載されている「解決方法」で回避が可能です。

具体的には、以下のとおりとなります。
1. Visual Studio 2005 を「管理者として実行」で起動
2. その Visual Studio 2005 で対象のプロジェクトを開く
3. 「プロジェクトのプロパティ」の、「ビルドイベント」を下記のように設定
 (Visual Basic:[コンパイル]タブから[ビルド イベント]ボタンをクリック
  C#:[ビルド イベント]タブをクリック)

  *ビルド前に実行するコマンドライン:
    %SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\ldr64.exe setwow
  *ビルド後に実行するコマンドライン:
    %SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\ldr64.exe set64
  *ビルド後のコマンドラインの実行条件:
    「ビルドが成功したとき」
 

14

Q. フォームに貼り付けた ImageKit コントロールにフォーカスがあると、フォームの KeyDown や KeyPress イベントが発生しません。どうすればよいですか。

2014/10/27

A. これは、ImageKit コントロールの問題ではなく、Button コントロールなどでも同様に発生する現象です。
この問題を解決するには、フォームの KeyPreview プロパティを True に設定してください。
これでコントロールにフォーカスがあってもフォームの KeyDown や KeyPress イベントが発生するようになります。
ただし、矢印キーや Tab、PageUp/Down キーなどに関しては、これだけでは、上記イベントは受け取れません。これらのキーの上記イベントを発生させるには、フォームクラスの ProcessDialogKey メソッドをオーバーライドするコードをフォームクラスに追加してください。
以下は、左矢印キーとタブキーが押された時に、メッセージボックスを表示するコード例です。
VB.NET :
<System.Security.Permissions.UIPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, _
        Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
Protected Overrides Function ProcessDialogKey( ByVal keyData As Keys) As Boolean
  '左キーが押されているか調べる
  If (keyData And Keys.KeyCode) = Keys.Left Then
    MessageBox.Show("左キーが押されました。")
    '左キーの本来の処理(左側のコントロールにフォーカスを移す)をさせたくないときは、trueを返す
    Return True
  'Tabキーが押されているか調べる
  ElseIf (keyData And Keys.KeyCode) = Keys.Tab Then
    MessageBox.Show("Tabキーが押されました。")
    Return True
  End If

  Return MyBase.ProcessDialogKey(keyData)
End Function

C# :
[System.Security.Permissions.UIPermission(
        System.Security.Permissions.SecurityAction.LinkDemand,
        Window = System.Security.Permissions.UIPermissionWindow.AllWindows)]
protected override bool ProcessDialogKey(Keys keyData)
{
  //左キーが押されているか調べる
  if ((keyData & Keys.KeyCode) == Keys.Left)
  {
    MessageBox.Show("左キーが押されました。");
    //左キーの本来の処理(左側のコントロールにフォーカスを移す)をさせたくないときは、trueを返す
    return true;
  }
  //Tabキーが押されているか調べる
  else if ((keyData & Keys.KeyCode) == Keys.Tab)
  {
    MessageBox.Show("Tabキーが押されました。");
    return true;
  }

  return base.ProcessDialogKey(keyData);
}

 

13

Q. 描画済みのアノテーションオブジェクトの情報を、コードで取得したり編集したりすることは可能でしょうか? / オブジェクトを右クリックして「プロパティ」から表示されるダイアログボックスで内容変更するのと同様のことをコードで実現できますか?

2014/10/27

A. 可能です。
単独選択されたオブジェクトの諸情報が「ImageKit.Edit.SelectedObject〜」という各プロパティで取得・設定が可能ですので、以下のコード例のように、オブジェクトを順次選択し、選択されたオブジェクトの各情報の条件によって必要な処理をする、といった方法で実現可能です。

※例:オブジェクトの種類が直線なら色を青に変える

VB.NET :
 For i As Integer = 1 To imageKit1.Edit.NumberOfObjects
   imageKit1.Edit.SelectObject(i)
   If imageKit1.Edit.SelectedObjectKind = Newtone.ImageKit.Win.KindOfEdit.Line Then
     imageKit1.Edit.SelectedObjectForeColor = Color.Blue
   End If
   imageKit1.Edit.DeselectObjects()
 Next


C# :
 for (int i = 1; i <= imageKit1.Edit.NumberOfObjects; i++)
 {
   imageKit1.Edit.SelectObject(i);
   if (imageKit1.Edit.SelectedObjectKind == KindOfEdit.Line)
     imageKit1.Edit.SelectedObjectForeColor = Color.Blue;
   imageKit1.Edit.DeselectObjects();
 }

 

12

Q. ImageKit.NET3 を利用したアプリケーションが、インターネットに繋がっていない環境だと、起動するのにかなり時間がかかってしまいます。回避策はありますか?

2014/10/27

A. ImageKit.NET3 のアセンブリ (dll) にはデジタル署名を付加しているので、アプリケーションが使用するアセンブリの有効性を確認するために CRL(「証明書失効リスト」)のダウンロード処理を行います。
インターネットに接続していない環境でアプリケーションの起動が遅くなるのは、タイムアウトになるまで CRL のダウンロードを繰り返し試みてしまうことが原因です。

インターネットに接続していないマシンで使用する場合の回避方法として、以下の手順により CRL のダウンロードを実行しないように設定してください。 (CRL をダウンロードしない場合でも ImageKit.NET3 を利用することは可能です。)

  1. [コントロール パネル] - [インターネット オプション] を実行します。
  2. [インターネットのプロパティ] ダイアログで [詳細設定] タブ を選択します。
  3. [発行元証明書の取り消しを確認する] のチェックボックスをオフします。

また、.NET Framework 2.0 Service Pack 1 以降では、アプリケーション名.exe.config に以下の行を追加することにより、アプリケーション開始時の署名検証を無効にすることができます。

<configuration>
  <runtime>
    <generatePublisherEvidence enabled="false"/>
  </runtime>
</configuration>
 
製品にはデジタル署名なしのアセンブリ(dll)も含まれておりますので、そちらを使用する方法もあります。

11

Q. 画像の縦横のピクセルからインチもしくはセンチメートルに換算するにはどうすればよいですか?

2014/10/27

A. 次の例を参考にしてください。

Imageプロパティの画像を換算する場合
VB.NET :
 Dim inchX, inchY As Single
 Dim cmX, cmY As Single

 Dim bmp As System.Drawing.Bitmap = ImageKit1.Image

 If bmp.HorizontalResolution <> 0 Then
  'インチ
  inchX = bmp.Width / bmp.HorizontalResolution
  'センチメートル
  cmX = inchX * 2.54
 End If

 If bmp.VerticalResolution <> 0 Then
  'インチ
  inchY = bmp.Height / bmp.VerticalResolution
  'センチメートル
  cmY = inchY * 2.54
 End If

C# :
 float inchX, inchY;
 float cmX, cmY;

 System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)imageKit1.Image;
 if (bmp.HorizontalResolution != 0)
 {
  //インチ
  inchX = bmp.Width / bmp.HorizontalResolution;
  //センチメートル
  cmX = inchX * (float)2.54;
 }

 if (bmp.VerticalResolution != 0)
 {
  //インチ
  inchY = bmp.Height / bmp.VerticalResolution;
  //センチメートル
  cmY = inchY * (float)2.54;
 }

10

Q. 64ビットアプリケーションで TWAIN を利用できますか?

2014/10/27

A. はい、アプリケーションを[Any CPU]または[x64]でビルドし、64ビットのスキャナドライバを使用すれば可能です。

9

Q. Visual Studioのデバッグモードでエフェクト処理やスキャン処理を実行すると、EXE単独の実行に比べて処理時間がかなり遅くなります。どうすればよいですか?

2014/10/27

A. マネージデバッグアシスタント(MDA)を無効化してください。詳しくは下記を参照してください。
http://msdn.microsoft.com/ja-jp/library/d21c150d.aspx

8

Q. 画像を左右反転もしくは上下反転するにはどうすればよいですか?

2014/10/27

A. Effect.Rotationメソッドを使用します。引数のangleを0にし、xTurnをtrueにすると左右反転、yTurnをtrueにすると上下反転になります。xTurn,yTurnを両方trueにすると上下左右反転となります。

7

Q. 新規にプロジェクトを作成し、フォームにコントロールを配置してからビルドするとエラーが発生するのですが?

2014/10/27

A. 次に示すアセンブリファイルをプロジェクトの参照設定に追加してください。

WinForm
(1)ImageKit[Newtone.ImageKit.Win.ImageKit.dll]をお使いの場合
Newtone.ImageKit.Common.dll, Newtone.ImageKit.Effect.dll, Newtone.ImageKit.File.dll, Newtone.ImageKit.Scan.dll
(2)Thumbnail[Newtone.ImageKit.Win.Thumbnail.dll]をお使いの場合
Newtone.ImageKit.Common.dll, Newtone.ImageKit.File.dll
(3)Play,Preview,Record[Newtone.ImageKit.Win.WebCamera.dll]をお使いの場合
Newtone.ImageKit.Common.dll

WebForm
(1)ImageKit[Newtone.ImageKit.Web.ImageKit.dll]をお使いの場合
Newtone.ImageKit.Common.dll, Newtone.ImageKit.File.dll
(2)Thumbnail[Newtone.ImageKit.Web.Thumbnail.dll]をお使いの場合
Newtone.ImageKit.Common.dll, Newtone.ImageKit.File.dll

アセンブリファイルは「ImageKit.NET3」をインストールしたフォルダの下のSystemフォルダにあります。

6

Q.ラスタイメージの解像度を変更するにはどうすればよいですか?

2014/10/27

A. 次の例を参考にしてください。

Imageプロパティの画像を300DPIに変更する場合
VB.NET :
Dim bmp As System.Drawing.Bitmap = ImageKit1.Image
bmp.SetResolution(300, 300)
ImageKit1.Image = bmp
bmp.Dispose()
C# :
System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)imageKit1.Image;
bmp.SetResolution(300, 300);
imageKit1.Image = bmp;

bmp.Dispose();

変更した解像度で保存する場合は、上記のコードでは元の解像度で保存されてしまいますので、下記のようにしてください。
VB.NET :
Dim bmp As New System.Drawing.Bitmap(ImageKit1.Image.Width, ImageKit1.Image.Height)
bmp.SetResolution(300, 300)
Dim g As System.Drawing.Graphics = Graphics.FromImage(bmp)
g.DrawImage(imageKit1.Image, 0, 0, ImageKit1.Image.Width, ImageKit1.Image.Height)
g.Dispose()
ImageKit1.Image = bmp
ImageKit1.File.FileName = ・・・
ImageKit1.File.SaveImageToFile(SaveFileType.・・・, Nothing)
bmp.Dispose()
C# :
System.Drawing.Bitmap bmp = new Bitmap(imageKit1.Image.Width, imageKit1.Image.Height);
bmp.SetResolution(300, 300);
Graphics g = System.Drawing.Graphics.FromImage(bmp);
g.DrawImage(imageKit1.Image, 0, 0, imageKit1.Image.Width, imageKit1.Image.Height);
g.Dispose();
imageKit1.Image = bmp
imageKit1.File.FileName = ・・・;
imageKit1.File.SaveImageToFile(SaveFileType.・・・, null);
bmp.Dispose();

5

Q. マルチ Tiff ファイルを作成するにはどうすればよいですか?

2014/10/27

A. 次の例を参考にしてください。

1.スキャナおよびデジタルカメラから取得した画像を保存する場合
VB.NET :
Dim Ret As Boolean
ImageKit1.File.FileName = "abc.tif" 'ファイル名

ImageKit1.Scan.Transfer = Newtone.ImageKit.ScanTransfer.Memory 'or Newtone.ImageKit.ScanTransfer.Native
Ret = ImageKit1.Scan.Execute() 'スキャン

'読み取りイベント
Private Sub ImageKit1_AfterScan(ByVal sender As Object, ByVal e As Newtone.ImageKit.AfterScanEventArgs) Handles ImageKit1.AfterScan
'下記のいずれかを実行
  '最後のページに追加
  ImageKit1.File.AppendTiffImage(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1)
  '3ページ目に挿入
  ImageKit1.File.InsertPageIntoMultipageTiff(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1, 3)
End Sub


C# :
bool Ret;
imageKit1.File.FileName = "abc.tif"; //ファイル名

imageKit1.Scan.Transfer = Newtone.ImageKit.ScanTransfer.Memory //or Newtone.ImageKit.ScanTransfer.Native
Ret = imageKit1.Scan.Execute(); //スキャン

//読み取りイベント
private void imageKit1_AfterScan(object sender, Newtone.ImageKit.AfterScanEventArgs e)
{
//下記のいずれかを実行
  //最後のページに追加
  imageKit1.File.AppendTiffImage(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1);
  //3ページ目に挿入
  imageKit1.File.InsertPageIntoMultipageTiff(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1, 3);
}


2.複数の画像ファイルを1つのファイルに保存する場合
VB.NET :
Dim I As Integer

ImageKit2.File.FileName = "abc.tif" 'ファイル名

ImageKit1.LayerNumber = -1 
ImageKit1.File.LoadPage = 0 

'001.jpg ... 005.jpgを1つにまとめる
For I = 1 To 5
  ImageKit1.File.FileName = I.ToString("d03") + ".jpg" 'ファイル名
  ImageKit1.File.LoadImageFromFile(Newtone.ImageKit.LoadFileType.Load)
  ImageKit2.File.AppendTiffImage(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1)
Next I

C# :
int i;

imageKit2.File.FileName = "abc.tif"; //ファイル名

imageKit1.LayerNumber = -1; 
imageKit1.File.LoadPage = 0; 

//001.jpg ... 005.jpgを1つにまとめる
for (i = 1; i <= 5; i++)
{
  imageKit1.File.FileName = i.ToString("d03") + ".jpg"; //ファイル名
  imageKit1.File.LoadImageFromFile(Newtone.ImageKit.LoadFileType.Load);
  imageKit2.File.AppendTiffImage(Newtone.ImageKit.SaveFileType.SaveTIFFNoncompressed, e.Bitmap1);
}

4

Q. サムネイルコントロール(WinForm)のサムネイル画像1個の大きさはどのように決まるのですか?

2014/10/27

A. 表示するサムネイル画像の縦方向の数と横方向の数で決まります。そのため、サムネイルコントロールの大きさが同じであれば、サムネイルの行数と列数が少ない方が描画エリアは相対的に大きくなります。実際にはImageSizeプロパティとサムネイルのコマの大きさにより描画されるサ イズが決まります。

3

Q. サムネイルコントロール(WinForm)のDragDropイベントでドロップされたファイル名を取得するにはどうすればいいですか?

2014/10/27

A. VB.NETとC#のサンプルコードを記載いたしますので参考にしてください。

VB.NET :
Private Sub Thumbnail1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Thumbnail1.DragDrop
  Dim FileName As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
End Sub

C# :

private void thumbnail1_Private Sub Thumbnail1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
  string[] FileName = (string [])e.Data.GetData(DataFormats.FileDrop);
}

2

Q. エフェクト処理やスキャン処理をコンポーネントとしてではなく、クラスとして使用できますか?

2014/10/27

A. はい、使用できます。
クラスライブラリのリファレンスが付属しておりますので、そちらをご参考ください。

1

Q. インストール後、2週間ほど経ってから正常に動作しなくなりました。どうすればよいですか?

2014/10/27

A. ライセンス認証処理を行ってください。
詳しくは ImageKit.NET3 をインストールしたフォルダ下の "Tool\Activation" フォルダ内の「activation.pdf」ファイルを参照してください。

Copyright (C) NEWTONE Corporation. All rights reserved.