フレームを表示

L_LoadMemoryTile

フレームを表示

#include "l_bitmap.h"

L_LTFIL_API L_INT L_LoadMemoryTilepBuffer、pBitmap、uStructSize、nCol、nRow、uWidth、uHeight、nBitsPerPixel、nOrder、uFlags、pfnCallback、pUserData、nBufferSize、pLoadOptionspFileInfo

L_UCHAR* pBuffer;

ロードした*/であるためにメモリ内のファイルに/*ポインター

pBITMAPHANDLE pBitmap;

/* ビットマップハンドルへのポインター*/

L_UINT uStructSize;

/* pBitmapがポイントする構造のサイズ(バイト単位) */

L_INT nCol;

/* タイルの左の列*/

L_INT nRow;

/* タイルの上行*/

L_UINT uWidth;

ピクセル*/のタイルの/*幅

L_UINT uHeight;

ピクセル*/のタイルの/*高さ

L_INT nBitsPerPixel;

/* 結果として生じるビットマップビット数*/

L_INT nOrder;

/* 目的のカラーオーダー*/

L_UINT uFlags;

/* 関数動作を決定するフラグ*/

FILEREADCALLBACK pfnCallback;

/* オプションのコールバック関数*/

L_VOID* pUserData;

/* コールバックのためのより多くのパラメータへのポインター*/

L_SSIZE_T nBufferSize;

メモリ(バイトの)*/のファイルの/*サイズ

pLOADFILEOPTION pLoadOptions;

/* オプションの拡張ロードオプションへのポインター*/

pFILEINFO pFileInfo;

/* 構造体へのポインタ*/

コールバック関数を用いて画像ファイル(任意の形式)のセクションをロードします。セクションは始まって(nCol、nRow)、横切ってuWidthピクセルとuHeightピクセルを拡張します。

パラメーター

説明

pBuffer

メモリ内のロードされるファイルへのポインター。

pBitmap

ロードしたデータのためのビットマップハンドルへのポインター。

uStructSize

バージョニングのためのバイト(pBitmapによってポイントされる構造体の)のサイズ。sizeof(BITMAPHANDLE)を使います。

nCol

タイルの左の桁番号。

nRow

タイルの行番号を上回ります。

uWidth

ピクセル単位で幅にタイルを張ります。

uHeight

ピクセル単位で高さにタイルを張ります。

nBitsPerPixel

結果として生じるビットマップビット数。以下は、有効値です:

 

意味

 

0

オリジナルファイルのビット数(変換しません)を保持します。12ビットおよび16ビットのグレースケール画像のロードに関する特別な注意.

 

8への1

結果として生じるビットマップの指定されたピクセル当たりビット

 

12

結果として生じるビットマップの12ビット/ピクセル。

 

16

結果として生じるビットマップの16ビット/ピクセル

 

24

結果として生じるビットマップの24ビット/ピクセル

 

32

結果として生じるビットマップの32ビット/ピクセル

 

48

結果として生じるビットマップの48ビット/ピクセル

 

64

結果として生じるビットマップの64ビット/ピクセル

 

nOrder

目的のカラーオーダー。設定可能な値は、以下の通りです。

 

意味

 

ORDER_RGB

[0] 赤/緑/青は注文します。

 

ORDER_BGR

[1] 青緑色赤は注文します。

 

ORDER_GRAY

[2] 12または16ビットグレースケールimage。12と16ビットグレースケールイメージは、DocumentとMedical画像化ツールキットでサポートされるだけです。

 

0

データは、8ビット/ピクセル以下です。

 

ORDER_RGBORGRAY

[3] 赤い、緑、青として、または12ビットまたは16ビットのグレースケールimageとして画像をロードします。12と16ビットグレースケールイメージは、DocumentとMedical画像化ツールキットでサポートされます。

 

ORDER_BGRORGRAY

[4] 青、緑、赤として、または12ビットまたは16ビットのグレースケールimageとして画像をロードします。12と16ビットグレースケールイメージは、DocumentとMedical画像化ツールキットでサポートされます。

 

ORDER_ROMM

[5] ROMMオーダー。ROMMは、24ビットと48ビットのイメージのみをサポートします。

 

ORDER_BGRORGRAYORROMM

[6] 赤い、緑、青として、または12ビットまたは16ビットのグレースケールimageとして、またはROMMとして画像をロードします。12と16ビットグレースケールイメージは、DocumentとMedical画像化ツールキットでサポートされます。ROMMは、24ビットと48ビットのカラーイメージのみをサポートします。

uFlags

L_LoadMemoryTileの動作を決定するバイナリフラグ。以下の値の一つ以上を指定することができます:

 

意味

 

LOADFILE_ALLOCATE

[0x0001]、関数はメモリを指定されたビットマップに割り当てます。(LOADFILE_STOREフラグを設定することはこのフラグをオーバーライドします。)

 

LOADFILE_STORE

[0x0002]、関数は指定されたビットマップにデータをロードします。(これがコールバック関数の動作に加えて起こります。)

 

LOADFILE_FIXEDPALETTE

[0x0004] このフラグは、パレット画像を固定パレットに強制的にディザリング処理させます。

 

LOADFILE_NOINTERLACE

[0x0008]、それがどのようにファイルで保存されるかに関係なく、関数は示される順序で画像データを渡します。(プログラムがインタレースファイルフォーマットを処理しないならば、このフラグを設定します。)

 

LOADFILE_ALLPAGES

[0x0010]、関数は複数ページのファイルのすべてのページをロードします。L_AppendPlayback関数を用いてビットマップリストを作成する場合だけ、このフラグを使います。

 

LOADFILE_NOINITBITMAP

[0x0020]、それがファイルをロードするとき、関数はビットマップハンドルを初期化しません。BITMAPHANDLE構造体で必要情報の全てを供給する場合だけ、このフラグを使います。

 

LOADFILE_COMPRESSED

[0x0040]できれば、1-ビットRLE-圧縮imageとして、ファイルをロードします。(ドキュメントとMedical Imagingツールキット)詳細については、「1ビット画像処理の高速化」を参照してください。

 

LOADFILE_SUPERCOMPRESSED

[0x0080](ドキュメントとMedical Imagingツールキット)、スーパー圧縮として1ビットまたは24-ビットイメージをロードします。ビットマップが1ビットまたは24ビットとしてロードされないならば、このフラグは無視されます。

 

LOADFILE_MULTITHREADED

[0x2000]、マルチスレッドのロードを使います

pfnCallback

追加の処理のためのオプションのコールバック関数。

 

コールバック関数を提供しないならば、このパラメーターの値としてNULLを使います。

 

コールバック関数を提供するならば、このパラメーターの値として関数ポインターを使用します。

 

コールバック関数は、FILEREADCALLBACK関数で説明される関数のプロトタイプに準拠しなければなりません。

pUserData

コールバック関数が必要とする一つ以上の追加のパラメータを渡すために使用することができるボイドポインター。

 

この機能を使用するには、値を変数に割り当てるか、必要な数のフィールドを格納する構造体を作成します。その後、このパラメーターで、変数または構造体のアドレスを渡し、L_VOID *に呼び出します。独自のpUserDataパラメーターでアドレスを受け取るコールバック関数は、適切なデータタイプのポインターにキャストし変数や構造体にアクセスします。

 

これ以上パラメーターが必要ない場合は、このパラメーターでNULLを渡すこともできます。

nBufferSize

メモリ(バイトの)のファイルのサイズ。

pLoadOptions

オプションの拡張ロードオプションへのポインター。デフォルトのロードオプションを使うために、NULLを渡します。

pFileInfo

FILEINFO構造体へのポインター。この構造体はimageをロードする際に使われるファイル情報を格納するかもしれません、または、それはロードされているファイルに関する情報で更新されるかもしれません。

 

何もファイルについてわかっていないならば、このパラメーターのためにNULLを渡します、さもなければ、型FILEINFOの変数を宣言して、FILEINFO.Flagsを0に設定します、そして、このパラメーターでFILEINFO構造体のアドレスを渡します。この場合、FILEINFO構造体のアドレスが渡されるならば、FILEINFO構造体はL_FileInfoの結果で更新されます。

 

ファイルタイプが知られさえすれば、pFileInfo.Formatをファイルタイプに設定して、pFileInfo.FlagsをFILEINFO_FORMATVALIDに設定します。L_FileInfoが以前に呼び出されたならば、これはされることもできます、しかし、ロードされるimageのサイズに影響を及ぼす値は変更されました(たとえば、L_SetPCDResolutionまたはL_SetWMFResolutionを呼び出すことによって)。この場合、構造体がpFileInfoによってポイントしたFILEINFOは、L_FileInfoの結果で更新されます。

 

L_FileInfoがこの関数を呼び出す前に呼び出されたならば、そして、変化はL_FileInfoによって塗りつぶされる構造体のコンテンツになされませんでした、そして、塗りつぶされたFILEINFO構造体のアドレスはこのパラメーターのために渡されることができます。この場合、FILEINFO.Flagsメンバは、FILEINFO_INFOVALIDに設定されなければなりません。L_FileInfo関数は、FILEINFO.FlagsをFILEINFO_INFOVALIDに設定します。この場合、この関数がファイルがファイルのためにフィルタリングすると尋ねる必要がないため、ロードはより高速でしょう型。

 

注意:ローカル変数は、初期化されません(スタックに置かれるため)。それで、ローカル変数としてFILEINFO構造体を持っているならば、そのFlagsパラメーターの値は未定義です。そして、おそらくFILEINFO_INFOVALIDまたはFILEINFO_FORMATVALIDを設定しておきます。そういうわけで、関数にFILEINFO構造体のアドレスを渡す前にFILEINFO.Flagsを初期化することは、重要です。

戻り値

SUCCESS

関数は成功しました。

<1

エラーが発生しました。リターンコードを参照してください

コメント

注意:

より多くのオプションは、LOADFILEOPTION構造体で利用できます。

12と16ビットグレースケールイメージのサポートは、DocumentとMedical画像化ツールキットで利用できるだけです。

この関数はL_LoadFileTileと非常に類似していますが、それはファイルの代わりにバッファからimageをロードします。

注意:この関数に初期化されていないFILEINFO構造体を決して渡すべきでありません。

必須のDLLとライブラリ

LTFIL
ファイルフォーマットDLL

ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください

プラットホーム

Win32、x64、Linux

参照

関数:

L_LoadFileTile, L_SaveFileTileL_DlgOpen, L_SetLoadInfoCallback, L_SetLoadResolution, L_SetPCDResolution, L_SetWMFResolution
Vectorファイルのために:L_2DGetViewMode, L_2DGetViewPort, L_2DSetViewMode, L_2DSetViewPort, L_GetLoadStatus

トピック:

ラスター画像は機能します:ファイルのロード,

 

イメージのロードと保存

 

LOADFILEOPTIONまたはSAVEFILEOPTION構造体を利用する関数のリストについては、LOADFILEOPTIONまたはSAVEFILEOPTION構造体を利用している関数を参照します。

サンプル

image全体をロードすることなく、一部のimageをロードします。

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName


// read the file into the buffer. The error checking is reduced for clarity
L_INT ReadFileIntoBuffer(L_UCHAR *pBuffer, L_OFFSET nBufferSize, L_TCHAR *pszFile)
{
   DWORD dwBytesRead;
   HANDLE hFile = CreateFile(pszFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
   if(hFile == INVALID_HANDLE_VALUE)
      return ERROR_FILENOTFOUND;
   ReadFile(hFile, pBuffer, (DWORD)nBufferSize, &dwBytesRead, NULL);
   CloseHandle(hFile);
   return SUCCESS;
}
 
L_INT LoadMemoryTileExample(L_VOID)
{
   L_INT nRet;
   BITMAPHANDLE Bitmap;
   FILEINFO FileInfo;
   L_UCHAR *pBuffer;    /* Pointer to the data in memory       */
   TCHAR *pszFileName = MAKE_IMAGE_PATH(TEXT("clean.tif"));
   memset(&FileInfo, 0, sizeof(FILEINFO));
   FileInfo.uStructSize = sizeof(FileInfo);
   nRet = L_FileInfo(pszFileName, &FileInfo, sizeof(FILEINFO), 0, NULL);
   if(nRet != SUCCESS)
      return nRet;
   // allocate a memory buffer large enough to contain the file
   pBuffer = (L_UCHAR*)malloc((SIZE_T)FileInfo.SizeDisk);
   if(!pBuffer)
      return ERROR_NO_MEMORY;
   nRet = ReadFileIntoBuffer(pBuffer, FileInfo.SizeDisk, pszFileName);
   if(nRet != SUCCESS)
   {
      free(pBuffer);
      return nRet;
   }
   // Load 1/2 from an image (center)
   nRet = L_LoadMemoryTile(pBuffer, &Bitmap, sizeof(BITMAPHANDLE), FileInfo.Width/4, FileInfo.Height/4, (FileInfo.Width)/2, (FileInfo.Height)/2, 0, ORDER_BGR, LOADFILE_ALLOCATE | LOADFILE_STORE, NULL, NULL, (L_SSIZE_T)FileInfo.SizeDisk, NULL, &FileInfo);
   if(nRet != SUCCESS)
   {
      free(pBuffer);
      return nRet;
   }
   free(pBuffer); // free the memory buffer, as we are done with it
   nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &Bitmap, FILE_BMP, 24, 0, NULL);
   if(nRet != SUCCESS)
      return nRet;
   if(Bitmap.Flags.Allocated)
      L_FreeBitmap(&Bitmap);
   return SUCCESS;
}