画像ファイルアクセス
[FIE module]


説明

本ライブラリは、画像ファイルの読込と保存を行うライブラリです。 ファイル形式は BMP, RAW, TIFF, PNG, JPEG の5種類が扱えます。 ただし、このうち TIFF, PNG, JPEG の3種はOSSを利用したライブラリとなっています。

関数の命名則
画像ファイルアクセスライブラリは、以下の関数命名則で構成されています。
  • fnFIE_load_xxx()
  • fnFIE_save_xxx()
  • fnFIE_check_xxx_info()
  • fnFIE_load_core_xxx()
  • fnFIE_save_core_xxx()
xxxの部分には、画像ファイルの種類名(bmp, raw, ...)が入ります。 このうち fnFIE_check_xxx_info(), fnFIE_load_core_xxx(), fnFIE_save_core_xxx() は TIFF, PNG, JPEG 形式でのみ定義されている関数で、低レベル関数となります。
読み込み用関数
読み込みには fnFIE_load_xxx() を使用します。 fnFIE_check_xxx_info(), fnFIE_load_core_xxx() は、その内部に組み込まれています。 fnFIE_load_xxx() は、画像ファイルに応じて適切なFIE画像オブジェクトのメモリを内部で確保し、画像ファイルを読み込みます。 fnFIE_check_xxx_info() は、適切なFIE画像オブジェクトを確保するための情報を画像ファイルから取得します。 fnFIE_load_core_xxx() は、画像ファイルの読み込みをします。 fnFIE_load_xxx() を使用する場合、ユーザーは fnFIE_check_xxx_info()fnFIE_load_core_xxx() を直接使用しません。 ユーザーが画像メモリの確保部分を、読み込み用の関数と切り離した実装を行いたいなどに、 fnFIE_check_xxx_info()fnFIE_load_core_xxx() を直接使用します。 fnFIE_load_core_xxx() は、関数の内部で、画像ファイルに応じて適切なFIE画像オブジェクトを確保しません。 ユーザーが、適切なFIE画像オブジェクトを渡す必要があります。

低レベル関数は、より多くのパラメータを指定することができます。 指定できるパラメータは、TIFF、PNG、JPEGで異なりますので、詳細は各ファイル形式毎の関数の説明を参照してください。 共通のパラメータとしては、コールバック関数を指定できます。 コールバック関数の詳細は後述します。

なお、FIE画像オブジェクトの画素タイプがF_IMG_RGBQUADであった場合、rgbReserved は 0 となります。
書き込み用関数
書き込みには fnFIE_save_xxx() を使用します。 fnFIE_save_core_xxx() は、その内部に組み込まれています。 fnFIE_save_xxx() を使用した場合、保存される画像の1ピクセルあたりのビット深度は FIE画像オブジェクトの画素タイプから以下のように決定します。

 グレーカラー
F_IMG_BIN1(※1)
F_IMG_UC888×3
F_IMG_RGBQUADraw以外:8×3,raw:8×4
F_IMG_RGBTRIPLE8×3
F_IMG_US161616×3
F_IMG_S161616×3
F_IMG_UI323232×3
F_IMG_I323232×3
F_IMG_I646464×3
F_IMG_FLOAT3232×3
F_IMG_DOUBLE6464×3

※1 白黒画像
※2 F_IMG_UC8 以外の画像型は、関数によっては非対応となっているものがあります

FIE画像オブジェクトの画素タイプによりビット深度が決定された場合、 保存した画像ファイルを一般的な画像ビューワーでは、実際より暗い画像が表示されることがあります。 画像ファイルによっては、例えばグレー画像で、ビット深度を2ビットや4ビットなどを指定することも可能です。 fnFIE_save_core_xxx() を使用すると、FIE画像オブジェクトの画素タイプによらない真のビット深度を指定することができます。 この指定により、画像ビューワーで、適切な画像を表示できます。 ただし、すべての画像ビューワーが対応している訳ではありませんので、注意してください。 また、実際に保存された画像ファイルのビット深度は変更されません。 あくまで、見かけの値が変わるだけです。 指定可能な画像ファイルは、TIFFとPNGです。
コールバック関数
処理の進行状況を取得するためのコールバック関数を指定することができます。 コールバック関数は、低レベル関数 fnFIE_load_core_xxx()fnFIE_save_core_xxx() で指定できます。 fnFIE_load_xxx()fnFIE_save_xxx() では、指定できません。 進行状況は、1ラインを処理する毎に更新をされます。 1ライン毎の処理ができない画像ファイルは、コールバック関数が無効になります。 例えば、PNGファイルがインターレス形式で保存されている場合やTIFFファイルがタイル形式で保存されている場合などです。 コールバック関数の型ついては F_IMG_CALLBACK を参照ください。


モジュール

 低レベル関数

データ構造

struct  F_IMG_INFO
 FIEイメージ用ヘッダー構造体 [詳細]

型定義

typedef BOOL(FVALGAPI * F_IMG_CALLBACK )(VOID *vpData, DOUBLE percentage)
 コールバック関数のポインタ型

列挙型

enum  f_color_img_type {
  F_COLOR_IMG_TYPE_UC8 = 1, F_COLOR_IMG_TYPE_RGBQ = 2,
  F_COLOR_IMG_TYPE_RGBTRI = 3
}
 8ビットカラー画像読込用FIE画像の種別 [詳細]
enum  f_png_strategy { F_PNG_STRATEGY_DEFAULT = 0, F_PNG_STRATEGY_RLE = 3 }
 PNGの圧縮戦略 [詳細]
enum  f_png_filter {
  F_PNG_FILTER_NONE = 0x08, F_PNG_FILTER_SUB = 0x10,
  F_PNG_FILTER_UP = 0x20, F_PNG_FILTER_AVG = 0x40,
  F_PNG_FILTER_PAETH = 0x80
}
 PNGのフィルタ種別 [詳細]
enum  f_tiff_compression {
  F_TIFF_COMPRESSION_NONE = 1, F_TIFF_COMPRESSION_DEFLATE = 2,
  F_TIFF_COMPRESSION_JPEG = 3, F_TIFF_COMPRESSION_CCITTFAX3 = 4,
  F_TIFF_COMPRESSION_CCITTFAX4 = 5
}
 TIFFの圧縮形式 [詳細]

関数

INT FVALGAPI fnFIE_load_bmp (const CHAR *filename, FHANDLE *himg, enum f_color_img_type type)
 ビットマップ読込
INT FVALGAPI fnFIE_save_bmp (const CHAR *filename, FHANDLE himg)
 ビットマップ保存
INT FVALGAPI fnFIE_load_raw (const CHAR *filename, FHANDLE *himg, INT type, INT byte_order, INT byte_step, INT width, INT height, size_t header_sz)
 RAW画像読込
INT FVALGAPI fnFIE_save_raw (const CHAR *filename, FHANDLE himg, const VOID *header, size_t header_sz)
 画像をRAW形式で保存
INT FVALGAPI fnFIE_load_img_file (const CHAR *filename, FHANDLE *himg, enum f_color_img_type type)
  [[OSS]] 画像ファイルの読み込み
INT FVALGAPI fnFIE_save_jpeg (const CHAR *filename, const FHANDLE hImg, INT quality)
  [[OSS]] JPEGファイルの保存
INT FVALGAPI fnFIE_load_jpeg (const CHAR *filename, FHANDLE *hImg, enum f_color_img_type type)
  [[OSS]] JPEGファイル読み込み
INT FVALGAPI fnFIE_save_png (const CHAR *filename, FHANDLE hImg, INT compression_level)
  [[OSS]] PNGファイルの保存
INT FVALGAPI fnFIE_save_png_ex (const CHAR *filename, FHANDLE hImg, INT compression_level, enum f_png_strategy compression_strategy, enum f_png_filter filter_type)
  [[OSS]] PNGファイルの保存(詳細設定付き)
INT FVALGAPI fnFIE_load_png (const CHAR *filename, FHANDLE *hImg, enum f_color_img_type type)
  [[OSS]] PNGファイル読み込み
INT FVALGAPI fnFIE_save_tiff (const CHAR *filename, const FHANDLE hImg, enum f_tiff_compression compression, INT quality)
  [[OSS]] TIFFファイルの保存
INT FVALGAPI fnFIE_load_tiff (const CHAR *filename, FHANDLE *hImg, enum f_color_img_type type)
  [[OSS]] TIFFファイル読み込み
INT FVALGAPI fnFIE_read_imgdata (FHANDLE *himg, fvstream *s, INT *size)
  [[OSS]] 画像データ読込
INT FVALGAPI fnFIE_write_imgdata (FHANDLE himg, fvstream *s, INT comp_level, INT *size)
  [[OSS]] 画像データ書込

型定義

typedef BOOL(FVALGAPI * F_IMG_CALLBACK)(VOID *vpData, DOUBLE percentage)

コールバック関数のポインタ型

TIFF、JPEG、PNGファイル用のコールバック関数のポインタ型です。 ファイル入出力の進行状況などを確認するために使用します。 コールバック関数は、ユーザーが用途に合わせて作成してください。

引数:
[in] vpData コールバック関数の呼び出し時に渡される任意のポインタ
[in] percentage ファイル入出力の進行状況[%]
戻り値:
TURE 処理を継続
FALSE 処理を中止


列挙型

8ビットカラー画像読込用FIE画像の種別

読み込む画像ファイルが8ビットカラー画像であり、読込先のFIE画像オブジェクトを

  1. F_IMG_UC8の3チャネル画像
  2. F_IMG_RGBQUADの1チャネル画像
  3. F_IMG_RGBTRIPLEの1チャネル画像

のうち、どれでも構成可能な場合に どの形式で画像オブジェクトを生成するかを指定するための列挙子です。

列挙型の値:
F_COLOR_IMG_TYPE_UC8  F_IMG_UC8, 3chで読込
F_COLOR_IMG_TYPE_RGBQ  F_IMG_RGBQUAD, 1chで保存
F_COLOR_IMG_TYPE_RGBTRI  F_IMG_RGBTRIPLE, 1chで保存

PNGの圧縮戦略

PNGファイルの保存時に使用する圧縮戦略です。 圧縮率と圧縮速度に影響します。

列挙型の値:
F_PNG_STRATEGY_DEFAULT  デフォルトの圧縮戦略(高圧縮)
F_PNG_STRATEGY_RLE  ランレングスを用いる圧縮戦略(高速)

PNGのフィルタ種別

PNGファイルの保存時に使用するフィルタ種別です。 圧縮率と圧縮速度に影響します。

列挙型の値:
F_PNG_FILTER_NONE  フィルタなし
F_PNG_FILTER_SUB  左側との差分
F_PNG_FILTER_UP  上側との差分
F_PNG_FILTER_AVG  左側と上側の平均値との差分
F_PNG_FILTER_PAETH  Paeth値との差分

TIFFの圧縮形式

TIFFファイルの保存時に選択する圧縮形式です。 JPEG圧縮は非可逆圧縮(情報損失あり)です。 それ以外の圧縮形式は、可逆圧縮(情報損失なし)です。

列挙型の値:
F_TIFF_COMPRESSION_NONE  圧縮なしで保存
F_TIFF_COMPRESSION_DEFLATE  gzipの圧縮アルゴリズムで保存
F_TIFF_COMPRESSION_JPEG  JPEG圧縮(非可逆圧縮)で保存(8ビット画像のみサポート)
F_TIFF_COMPRESSION_CCITTFAX3  CCITTファックス(FAX3)で保存(白黒画像のみサポート)
F_TIFF_COMPRESSION_CCITTFAX4  CCITTファックス(FAX4)で保存(白黒画像のみサポート)


関数

INT FVALGAPI fnFIE_load_bmp ( const CHAR *  filename,
FHANDLE *  himg,
enum f_color_img_type  type 
)

ビットマップ読込

BMP形式の画像ファイルをファイルからFIE画像オブジェクトに読込みます。

読み込み可能なBMP形式は下記の通りです。

  • bpp==1 の2値白黒
    F_IMG_BIN型の2値画像として読込む。
  • bpp==8 のパレットカラー
    パレットの状態にかかわらず、 F_IMG_UC8型の濃淡画像として読込む。
    この時、パレット色から濃淡への変換は、(R+G+B)/3 で行う。
  • bpp==24 or bpp==32 のカラー画像
    F_IMG_RGBQUAD型のカラー画像、F_IMG_RGBTRIPLE型のカラー画像、 F_IMG_UC8 チャネル数3の画像のいずれかとして読み込む。 どの形式にするかは type パラメータにより指定する。

himg パラメータには読込先画像オブジェクトを指定します。 *himg へ既に確保された画像オブジェクトを指示した場合は、 その画像オブジェクトに対して画像を読み込みます。 この際 *himg へ指定する画像は必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等がBMPファイルと異なっている 場合には、本関数内部で自動的にリサイズが行われます。 *himg へNULLが指定された場合には、本関数内部で自動的に ルート画像を確保し *himg へ代入して返します。 この場合、ユーザーは *himg が不要になった後に fnFIE_free_object() を コールしてメモリを解放する必要があります。

引数:
[in] filename 読込む画像ファイル名
[out] himg 読込み先ルート画像オブジェクトハンドル
[in] type 出力するFIE画像オブジェクトの画像形式が F_IMG_UC8、F_IMG_RGBQUAD、 F_IMG_RGBTRIPLEのいずれかを選択可能な場合に、どの画素形式とするかを指定します。 その他の場合では無視されます。
  • F_COLOR_IMG_TYPE_UC8: F_IMG_UC8で出力する
  • F_COLOR_IMG_TYPE_RGBQ: F_IMG_RGBQUADで出力する
  • F_COLOR_IMG_TYPE_RGBTRI: F_IMG_RGBRIPLEで出力する
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_UNSUPPORTED_IMAGE_FILE サポートされていない形式のBMPファイル
F_ERR_FILE_IO BMPファイルのオープン失敗
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_bmp ( const CHAR *  filename,
FHANDLE  himg 
)

ビットマップ保存

指定の画像をビットマップファイルとして保存します。

himg パラメータにて指定される画像は、 下記の条件のいずれかを満たしていなければなりません。

  • F_IMG_BIN形式 かつ チャネル数1
  • F_IMG_UC8形式 かつ チャネル数1
  • F_IMG_UC8形式 かつ チャネル数3
  • F_IMG_RGBQUAD形式 かつ チャネル数1
  • F_IMG_RGBTRIPLE形式 かつ チャネル数1
なお himg パラメータにて指定される画像は、ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと同じサイズの BMP画像ファイルが生成されます。

引数:
[in] filename 保存画像ファイル名
[in] himg 保存する画像( type: bin, uc8, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO BMPファイルのオープン失敗
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_load_raw ( const CHAR *  filename,
FHANDLE *  himg,
INT  type,
INT  byte_order,
INT  byte_step,
INT  width,
INT  height,
size_t  header_sz 
)

RAW画像読込

指定のRAW画像ファイルを、指定のFIE画像オブジェクトに読込みます。

*himg パラメータには読込先画像オブジェクトを指定します。 *himg へ既に確保された画像オブジェクトを指示した場合は、その画像オブジェクトに対して画像を読み込みます。 この際 himg へ指定する画像は必ずルート画像でなければなりません。 指定されたルート画像は引数の width, height 及び type で指定された値に本関数内部で自動的にリサイズが行われます。

*himg へNULLが指定された場合には、本関数内部で自動的にルート画像を確保し *himg へ代入して返します。 この場合、ユーザーは *himg が不要になった後に fnFIE_free_object() をコールしてメモリを解放する必要があります。

引数:
[in] filename 読み込む画像ファイル名
[out] himg 読込先画像のハンドラ
[in] type RAW画像ファイルの画像タイプ
  • F_IMG_BIN 2値画像(32bitパッキング)
  • F_IMG_UC8 濃淡8bit画像
  • F_IMG_S16 濃淡符号付き16bit画像
  • F_IMG_US16 濃淡16bit画像
  • F_IMG_I32 濃淡符号付き32bit画像
  • F_IMG_UI32 濃淡32bit画像
  • F_IMG_I64 濃淡符号付き64bit画像
  • F_IMG_FLOAT 濃淡単精度浮動小数点画像
  • F_IMG_DOUBLE 濃淡倍精度浮動小数点画像
  • F_IMG_RGBQUAD RGBQUADの配列で表される、8bitカラー画像
  • F_IMG_RGBTRIPLE 24bitパッキングカラー画像
[in] byte_order RAW画像のバイトオーダー
  • 0 Little Endian
  • 1 Big Endian
[in] byte_step RAW画像ファイルの1行ステップ(バイト数)
[in] width RAW画像ファイルの画像幅
[in] height RAW画像ファイルの画像高さ
[in] header_sz RAW画像のヘッダサイズ(byte単位)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが指定されたため異常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足のため異常終了
F_ERR_FILE_IO ファイルI/Oエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_raw ( const CHAR *  filename,
FHANDLE  himg,
const VOID *  header,
size_t  header_sz 
)

画像をRAW形式で保存

指定の画像をRAW形式で保存します。 本関数で保存した画像ファイルのエンディアンは使用するCPUのモードに依存し、 x86系の場合はLittleEndianになります。また、画像の1行ステップは下記の通りとなります

  • F_IMG_BINの場合 ((画像幅) / 32) * 4 (※32での割算の余りは切り上げる。ex. 31/32*4 -> 4 )
  • F_IMG_UC8の場合 (画像幅) * 1
  • F_IMG_S16の場合 (画像幅) * 2
  • F_IMG_US16の場合 (画像幅) * 2
  • F_IMG_I32の場合 (画像幅) * 4
  • F_IMG_UI32の場合 (画像幅) * 4
  • F_IMG_I64の場合 (画像幅) * 8
  • F_IMG_FLOATの場合 (画像幅) * 4
  • F_IMG_DOBULEの場合 (画像幅) * 8
  • F_IMG_RGBQUADの場合 (画像幅) * 4
  • F_IMG_RGBTRIPLEの場合 (画像幅) * 3
なお himg パラメータにて指定される画像は、ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと同じサイズの RAW画像ファイルが生成されます。

引数:
[in] filename 保存画像ファイル名
[in] himg 保存する画像のハンドル
[in] header RAW画像のヘッダデータ
[in] header_sz RAW画像のヘッダサイズ(==headerのサイズ) (byte単位)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが指定されたため異常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定されたため異常終了
F_ERR_FILE_IO ファイルI/Oエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_load_img_file ( const CHAR *  filename,
FHANDLE *  himg,
enum f_color_img_type  type 
)

[[OSS]] 画像ファイルの読み込み

指定されたファイルの内容から種別を自動で判別し、 対応形式であった場合、それをFIE画像オブジェクトに読み込みます。 対応画像形式は BMP, PNG, JPEG, TIFF の4種類です。 非対応形式の画像ファイルが指定された場合には F_ERR_UNSUPPORTED_IMAGE_FILE を返します。

himg パラメータには読込先画像オブジェクトを指定します。 *himg へ既に確保された画像オブジェクトを指示した場合は、 その画像オブジェクトに対して画像を読み込みます。 この際 *himg へ指定する画像は必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等が画像ファイルと異なっている 場合には、本関数内部で自動的にリサイズが行われます。 *himg へNULLが指定された場合には、本関数内部で自動的に ルート画像を確保し *himg へ代入して返します。 この場合、ユーザーは *himg が不要になった後に fnFIE_free_object() を コールしてメモリを解放する必要があります。

BMP, PNG, JPEG, TIFF の各形式の読み込みは、下記の関数が内部で用いられます。

それぞれの詳細仕様に関してはリンク先の各関数のドキュメントを参照してください。

引数:
[in] filename 読み込む画像ファイル名
[out] himg 読み込み先ルート画像オブジェクトのハンドルのポインタ
[in] type 出力するFIE画像オブジェクトの画像形式が F_IMG_UC8 または F_IMG_RGBQUAD を 選択可能な場合に、どちらの画素形式とするかを指定します。 その他の場合では無視されます。
  • F_COLOR_IMG_TYPE_UC8: F_IMG_UC8で出力する
  • F_COLOR_IMG_TYPE_RGBQ: F_IMG_RGBQUADで出力する
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO ファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なファイルを読み込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_jpeg ( const CHAR *  filename,
const FHANDLE  hImg,
INT  quality 
)

[[OSS]] JPEGファイルの保存

指定したFIE画像オブジェクトをJPEGファイルとして保存します。

FIE画像オブジェクトとの対応
保存されるFIE画像オブジェクトと対応するチャネル数は、以下の通りとなります。 なお、下記以外のFIE画像オブジェクトが渡された場合は、エラーとなります。
  • F_IMG_UC8 (チャネル数 1、3)
  • F_IMG_RGBQUAD (チャネル数 1)
hImg パラメータにて指定される画像オブジェクトは、ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと同じサイズのJPEGファイルが生成されます。
圧縮
quality パラメータで、保存する JPEGファイルの品質を設定できます。 品質は 0〜100の範囲で指定できます。 範囲外の値を指定した場合にはエラーとなります。 値が小さいほど圧縮率は高くなり、品質が高ければ画像サイズは大きくなります。
使用例
fnFIE_load_jpeg() の例を参照してください。
引数:
[in] filename 保存するJPEGファイル名
[in,out] hImg 保存するFIE画像
[in] quality 保存するJPEGファイルの品質[0,100]
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO JPEGファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なJPEGファイルへ書き込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_load_jpeg ( const CHAR *  filename,
FHANDLE *  hImg,
enum f_color_img_type  type 
)

[[OSS]] JPEGファイル読み込み

JPEGファイルをFIE画像オブジェクトに読み込みます。

FIE画像との対応
読み込み可能なJPEGファイルを以下に示します。 なお、JPEGファイル、FIE画像のパラメータが以下と異なる場合はエラーとなります。
  • グレー画像
    • F_IMG_UC8(ビット深度8)
    • JPEGファイル、FIE画像共に、チャネル数は1とする。
  • カラー画像
    • F_IMG_RGBQUAD(ビット深度8 ※1 ※2)
    • F_IMG_UC8(ビット深度8 ※1)
    • JPEGファイルのチャネル数は3とする。
    • FIE画像のチャネル数はF_IMG_UC8は 3、F_IMG_RGBQUADは 1である。
※1 読み込み先がF_IMG_RGBQUADかF_IMG_UC8かの判断は、f_color_img_typeパラメータで決定されます。
※2 rgbReserved は 0 となります。
hImg パラメータには読み込み先画像オブジェクトを指定します。 *hImg へ既に確保された画像オブジェクトを指定した場合は、その画像オブジェクトに対して画像を読み込みます。 この際 *hImg へ指定する画像オブジェクトは必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等が JPEGファイルと異なっている場合には、 本関数内部で自動的にリサイズを行います。 *hImg へNULLが指定された場合には、本関数内部で自動的にルート画像を確保し *hImg へ代入して返します。 この場合、ユーザーは *hImg が不要になった後に fnFIE_free_object() をコールしてメモリを解放することが必要となります。
使用例
// エラー処理は省略しているので注意して下さい。
#include "fie.h"

VOID sample1()
{
    FHANDLE himg = NULL;

    // JPEGファイルを読み込みます。
    // F_COLOR_IMG_TYPE_UC8 は、カラー画像を読み込む際に、FIEオブジェクトの画素タイプを指定します。
    // F_COLOR_IMG_TYPE_UC8 は、F_IMG_UC8 の 3チャネル
    // F_COLOR_IMG_TYPE_RGBQ は、F_IMG_RGBQUAD の1チャネルに対応しています。
    fnFIE_load_jpeg( "test.jpeg", &himg, F_COLOR_IMG_TYPE_UC8 );

    // JPEGファイルへ書き込みます。
    // 保存するファイルの品質を 100(画像サイズは最大)と指定します。
    fnFIE_save_jpeg( "result.jpeg", himg, 100 );

    fnFIE_free_object( himg );

    return;
}

// コールバック関数の例
// 処理の進行状況をパーセンテージで取得します。
BOOL callback( VOID *vpData, DOUBLE percentage )
{
    // vpDataは、一つ前に呼び出されたときの、percentageの値を保持
    if( vpData ){
        if( *( (DOUBLE* )vpData ) > percentage )
            return FALSE;

         *( (DOUBLE* )vpData ) = percentage;
    }
    return TRUE;
}

// 低レベル関数を使用した場合
VOID sample2()
{
    FHANDLE himg = NULL;
    F_IMG_INFO jpeg_info;
    DOUBLE percentage;
    DOUBLE *p_percentage = NULL;    // コールバック関数の呼び出し時に渡される任意のポインタ

    // 低レベル関数では、メモリ確保は自身で行う必要があります。
    // そのために、JPEGファイルの内容を確認します。
    fnFIE_check_jpeg_info( "test.jpeg", F_COLOR_IMG_TYPE_UC8, &jpeg_info );

    // JPEGファイル読み込みのためのメモリを確保します。
    himg = fnFIE_img_root_alloc( jpeg_info.type, jpeg_info.channel, jpeg_info.width, jpeg_info.height );
    percentage = 0;
    p_percentage = &percentage;

    // JPEGファイルを読み込みます。
    // 進行状況を確認するために、コールバック関数を指定します。
    // コールバック関数は、省略可能です。
    fnFIE_load_core_jpeg( "test.jpeg", himg, (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    // JPEGファイルへ書き込みます。
    // 品質は 0(圧縮率が最大となります) を指定します。
    percentage = 0;
    fnFIE_save_core_jpeg( "result.jpeg", himg, 0, (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    fnFIE_free_object( himg );

    return;
}

INT main()
{
    // FIEライブラリの使用前に必ずコールする必要があります。
    fnFIE_setup();

    sample1();
    sample2();

    // 終了処理
    fnFIE_teardown();

    return 0;
}
引数:
[in] filename 読み込むJPEGファイル名
[out] hImg 読み込み先ルート画像オブジェクトのハンドルのポインタ
[in] type FIE画像オブジェクトの、F_IMG_UC8、またはF_IMG_RGBQUADで保存可能な場合の画素タイプを指定する。 それ以外のタイプでは無視される。
  • F_IMG_UC8で保存する場合は、F_COLOR_IMG_TYPE_UC8を指定
  • F_IMG_RGBQUADで保存する場合は、F_COLOR_IMG_TYPE_RGBQを指定
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO JPEGファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なJPEGファイルを読み込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_png ( const CHAR *  filename,
FHANDLE  hImg,
INT  compression_level 
)

[[OSS]] PNGファイルの保存

指定したFIE画像オブジェクトをPNGファイルとして保存します。

FIE画像との対応
保存されるFIE画像オブジェクトと対応するチャネル数は、以下の通りとなります。 下記以外のチャネル数のFIE画像オブジェクトが渡された場合は、エラーとなります。
  • F_IMG_BIN (チャネル数 1)
  • F_IMG_UC8 (チャネル数 1、3)
  • F_IMG_US16 (チャネル数 1、3)
  • F_IMG_RGBQUAD (チャネル数 1)
保存されるPNGファイルのカラータイプは、以下の通りです。
  • F_IMG_RGBQUAD以外のチャネル数が1の画像は、PNG_COLOR_TYPE_GRAY
  • F_IMG_RGBQUAD以外のチャネル数が3の画像は、PNG_COLOR_TYPE_RGB
  • F_IMG_RGBQUADは PNG_COLOR_TYPE_RGB
なお hImg パラメータにて指定される画像は、ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと同じサイズのPNGファイルが生成されます。
圧縮レベル
compression_level にて保存されるPNGファイルの圧縮レベルを指定することができます。 範囲外の値を指定した場合は、エラーとなります。
  • -1 デフォルト(圧縮レベル 6)
  • 0 圧縮なし
  • 1(圧縮速度優先) 〜 9(圧縮率優先)
αチャネル
FIE画像オブジェクトの画素タイプが F_IMG_RGBQUAD の場合、αチャネルは保存するPNGファイルに反映されません。 何らかの値をαチャネルに設定していても無視されますので、注意してください。
使用例
fnFIE_load_png() の例を参照してください。
引数:
[in] filename 保存するPNGファイル名
[in] hImg 保存するFIE画像
[in] compression_level 圧縮レベル[-1〜9]
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO PNGファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なPNGファイルへ書き込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_png_ex ( const CHAR *  filename,
FHANDLE  hImg,
INT  compression_level,
enum f_png_strategy  compression_strategy,
enum f_png_filter  filter_type 
)

[[OSS]] PNGファイルの保存(詳細設定付き)

指定したFIE画像オブジェクトをPNGファイルとして保存します。 fnFIE_save_png() との違いは、圧縮戦略とフィルタ種別を指定できることです。

FIE画像との対応
保存されるFIE画像オブジェクトと対応するチャネル数は、以下の通りとなります。 下記以外のチャネル数のFIE画像オブジェクトが渡された場合は、エラーとなります。
  • F_IMG_BIN (チャネル数 1)
  • F_IMG_UC8 (チャネル数 1、3)
  • F_IMG_US16 (チャネル数 1、3)
  • F_IMG_RGBQUAD (チャネル数 1)
保存されるPNGファイルのカラータイプは、以下の通りです。
  • F_IMG_RGBQUAD以外のチャネル数が1の画像は、PNG_COLOR_TYPE_GRAY
  • F_IMG_RGBQUAD以外のチャネル数が3の画像は、PNG_COLOR_TYPE_RGB
  • F_IMG_RGBQUADは PNG_COLOR_TYPE_RGB
圧縮レベル
compression_level にて保存されるPNGファイルの圧縮レベルを指定することができます。 範囲外の値を指定した場合は、エラーとなります。
  • -1 デフォルト(圧縮レベル 6)
  • 0 圧縮なし
  • 1(圧縮速度優先) 〜 9(圧縮率優先)
圧縮戦略
compression_strategy にてPNGファイル保存に用いる圧縮戦略を指定することができます。
  • F_PNG_STRATEGY_DEFAULT
    標準の圧縮戦略です。高い圧縮率を期待できます。 fnFIE_save_png() で使用されます。
  • F_PNG_STRATEGY_RLE
    ランレングスを用いる圧縮戦略です。高速な圧縮を期待できます。
フィルタ種別
filter_type にてPNGファイル保存に用いるフィルタ処理を指定することができます。 フィルタ処理は近接画素との差分を取るものであり、なだらかな画像において圧縮効率を高める効果があります。
  • F_PNG_FILTER_NONE
    フィルタ処理を行いません。変化の多い画像や、二値画像のような同じ値が多く含まれる画像で高い圧縮率を期待できます。 fnFIE_save_png() で使用されます。
  • F_PNG_FILTER_SUB
    左側との差分を使用します。横方向に変化の少ない画像で高い圧縮率を期待できます。また、高速な圧縮を期待できます。
  • F_PNG_FILTER_UP
    上側との差分を使用します。縦方向に変化の少ない画像で高い圧縮率を期待できます。
  • F_PNG_FILTER_AVG
    左側と上側の平均値との差分を使用します。斜め方向に変化の少ない画像で高い圧縮率を期待できます。
  • F_PNG_FILTER_PAETH
    Paeth値と呼ばれる値との差分を使用します。多くの画像で安定した圧縮率を期待できます。
αチャネル
FIE画像オブジェクトの画素タイプが F_IMG_RGBQUAD の場合、αチャネルは保存するPNGファイルに反映されません。 何らかの値をαチャネルに設定していても無視されますので、注意してください。
引数:
[in] filename 保存するPNGファイル名
[in] hImg 保存するFIE画像
[in] compression_level 圧縮レベル[-1〜9]
[in] compression_strategy 圧縮戦略
  • F_PNG_STRATEGY_DEFAULT
  • F_PNG_STRATEGY_RLE
[in] filter_type フィルタ種別
  • F_PNG_FILTER_NONE
  • F_PNG_FILTER_SUB
  • F_PNG_FILTER_UP
  • F_PNG_FILTER_AVG
  • F_PNG_FILTER_PAETH
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO PNGファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なPNGファイルへ書き込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_load_png ( const CHAR *  filename,
FHANDLE *  hImg,
enum f_color_img_type  type 
)

[[OSS]] PNGファイル読み込み

PNGファイルをFIE画像オブジェクトに読み込みます。

FIE画像との対応
読み込み可能なPNGファイルを以下に示します。 PNGファイル、FIE画像のパラメータが以下と異なる場合はエラーとなります。
  • 2値白黒画像
    • F_IMG_BIN
    • PNGファイル、FIE画像共に、チャネル数は1とする。
  • グレー画像
    • F_IMG_UC8(ビット深度2〜8)
    • F_IMG_US16(ビット深度9〜16)
    • PNGファイルのチャネル数は1とする。ただしαチャネルがある場合は2となる。(※1)
    • FIE画像のチャネル数は1とする。
  • カラー画像
    • F_IMG_RGBQUAD(ビット深度2〜8 ※2 ※3)
    • F_IMG_UC8(ビット深度2〜8 ※2)
    • F_IMG_US16(ビット深度9〜16)
    • PNGファイルのチャネル数は3とする。ただしαチャネルがある場合は4となる。(※3)
    • FIE画像のチャネル数は3とする。ただし、F_IMG_RGBQUADのみ、チャネル数は1である。
※1 FIE画像に読み込む際に、αチャネルは無視されます。
※2 読み込み先がF_IMG_RGBQUADかF_IMG_UC8かの判断は、f_color_img_typeパラメータで決定されます。
※3 rgbReserved は 0 となります。
hImg パラメータには読み込み先画像オブジェクトを指定します。 *hImg へ既に確保された画像オブジェクトを指示した場合は、その画像オブジェクトに対して画像を読み込みます。 この際 *hImg へ指定する画像は必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等がPNGファイルと異なっている場合には、本関数内部で自動的にリサイズを行います。 *hImg へNULLが指定された場合には、本関数内部で自動的にルート画像を確保し *hImg へ代入して返します。 この場合、ユーザーは *hImg が不要になった後に fnFIE_free_object() をコールしてメモリを解放する必要があります。
使用例
// エラー処理は省略しているので注意して下さい。
#include "fie.h"

VOID sample1()
{
    FHANDLE himg = NULL;

    // PNGファイルを読み込みます。
    // F_COLOR_IMG_TYPE_UC8 は、カラー画像を読み込む際に、FIEオブジェクトの画素タイプを指定します。
    // F_COLOR_IMG_TYPE_UC8 は、F_IMG_UC8 の 3チャネル
    // F_COLOR_IMG_TYPE_RGBQ は、F_IMG_RGBQUAD の1チャネルに対応しています。
    fnFIE_load_png( "test.png", &himg, F_COLOR_IMG_TYPE_UC8 );

    // PNGファイルへ書き込みます。
    // デフォルトの圧縮レベルを指定します。
    fnFIE_save_png( "result.png", himg, -1 );

    fnFIE_free_object( himg );

    return;
}

// コールバック関数の例
// 処理の進行状況をパーセンテージで取得します。
BOOL callback( VOID *vpData, DOUBLE percentage )
{
    // vpDataは、一つ前に呼び出されたときの、percentageの値を保持
    if( vpData ){
        if( *( (DOUBLE* )vpData ) > percentage )
            return FALSE;

         *( (DOUBLE* )vpData ) = percentage;
    }
    return TRUE;
}

// 低レベル関数を使用した場合
VOID sample2()
{
    FHANDLE himg = NULL;
    F_IMG_INFO png_info;
    DOUBLE percentage;
    DOUBLE *p_percentage = NULL;    // コールバック関数の呼び出し時に渡される任意のポインタ
    INT depth;                      // 真のビット深度

    // 低レベル関数では、メモリ確保は自身で行う必要があります。
    // そのために、PNGファイルの内容を確認します。
    fnFIE_check_png_info( "test.png", F_COLOR_IMG_TYPE_UC8, &png_info );

    // PNGファイル読み込みのためのメモリを確保します。
    himg = fnFIE_img_root_alloc( png_info.type, png_info.channel, png_info.width, png_info.height );
    percentage = 0;
    p_percentage = &percentage;

    // PNGファイルを読み込みます。
    // 真のビット深度を取得します。
    // 真のビット深度の取得は、省略可能です。
    // 進行状況を確認するために、コールバック関数を指定します。
    // コールバック関数は、省略可能です。
    fnFIE_load_core_png( "test.png", himg, &depth, (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    // PNGファイルへ書き込みます。
    // 圧縮レベルは最大を指定します。
    percentage = 0;
    fnFIE_save_core_png( "result.png", himg, 9, depth, (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    fnFIE_free_object( himg );

    return;
}

INT main()
{
    // FIEライブラリの使用前に必ずコールする必要があります。
    fnFIE_setup();

    sample1();
    sample2();

    // 終了処理
    fnFIE_teardown();

    return 0;
}
引数:
[in] filename 読み込むPNGファイル名
[out] hImg 読み込み先ルート画像オブジェクトのハンドルのポインタ
[in] type 出力するFIE画像オブジェクトの画像形式が F_IMG_UC8 または F_IMG_RGBQUAD を 選択可能な場合に、どちらの画素形式とするかを指定します。 その他の場合では無視されます。
  • F_COLOR_IMG_TYPE_UC8: F_IMG_UC8で出力する
  • F_COLOR_IMG_TYPE_RGBQ: F_IMG_RGBQUADで出力する
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO PNGファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なPNGファイルを読み込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_save_tiff ( const CHAR *  filename,
const FHANDLE  hImg,
enum f_tiff_compression  compression,
INT  quality 
)

[[OSS]] TIFFファイルの保存

指定したFIE画像オブジェクトをTIFFファイルとして保存します。

FIE画像オブジェクトとの対応
保存されるFIE画像オブジェクトと対応するチャネル数は、以下の表の通りとなります。 下記以外のFIE画像オブジェクトが渡された場合は、エラーとなります。 なお hImg パラメータにて指定される画像は、ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと同じサイズのTIFFファイルが生成されます。

  TIFF FIE
TIFFTAQ_PHOTOMETRIC TIFFTAQ_SAMPLEFOMAT 画像タイプ チャネル数
白黒 MINISBLACK × bin 1
グレースケール MINISBLACK × uc8 1
us16 1
カラー RGB × rgbq 1
uc8 3
us16 3
その他 MINISBLACK INT s16 1
RGB 3
MINISBLACK IEEEFP double 1
RGB 3
圧縮
本関数では compression パラメータによって圧縮形式を指定できます。 指定可能な圧縮形式は、以下の通りです。 なお、JPEG圧縮は非可逆圧縮( F_TIFF_COMPRESSION_JPEG: 情報損失あり)です。 それ以外の圧縮形式は、可逆圧縮(情報損失なし)です。
  • 圧縮なしで保存する場合は、F_TIFF_COMPRESSION_NONEを指定
  • gzipの圧縮アルゴリズムで保存する場合は、F_TIFF_COMPRESSION_DEFLATEを指定
  • JPEG圧縮で保存する場合は、F_TIFF_COMPRESSION_JPEGを指定(※1)
  • CCITTファックス(FAX3)で保存する場合は、F_TIFF_COMPRESSION_CCITTFAX3を指定(※2)
  • CCITTファックス(FAX4)で保存する場合は、F_TIFF_COMPRESSION_CCITTFAX4を指定(※2)

    ※1 8ビット画像のみでサポートされている。
    ※2 白黒画像のみサポートされている。
対応していない画像ファイルで、これらの圧縮形式を指定した場合には、圧縮なしで保存されます。 不正な圧縮形式を指定した場合はエラーとなります。
compression パラメータに F_TIFF_COMPRESSION_DEFLATE 又は F_TIFF_COMPRESSION_JPEG を指定した場合は、quality パラメータにより圧縮レベルを指定できます。 指定できる圧縮レベルの範囲は以下の通りです。
  • F_TIFF_COMPRESSION_DEFLATE [-1〜9]
    • -1 デフォルト(圧縮レベル 6)
    • 0 圧縮なし
    • 1 圧縮速度優先
    • 9 圧縮率優先
  • F_TIFF_COMPRESSION_JPEG [0〜100]
compression パラメータに F_TIFF_COMPRESSION_JPEG を指定した場合には、 quality パラメータに指定する値が小さいほど圧縮率が高くなります。 なお、パラメータが上記の範囲外の場合はエラーが返されます。
使用例
fnFIE_load_tiff() の例を参照してください。
引数:
[in] filename 保存するTIFFファイル名
[in] hImg 保存するFIE画像オブジェクトのハンドル
[in] compression 圧縮形式
  • F_TIFF_COMPRESSION_NONE
  • F_TIFF_COMPRESSION_DEFLATE
  • F_TIFF_COMPRESSION_JPEG
  • F_TIFF_COMPRESSION_CCITTFAX3
  • F_TIFF_COMPRESSION_CCITTFAX4
[in] quality 圧縮レベル
  • F_TIFF_COMPRESSION_DEFLATE [-1〜9]
  • F_TIFF_COMPRESSION_JPEG [0〜100]
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO TIFFファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なTIFFファイルへ書き込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_load_tiff ( const CHAR *  filename,
FHANDLE *  hImg,
enum f_color_img_type  type 
)

[[OSS]] TIFFファイル読み込み

TIFFファイルをFIE画像オブジェクトに読み込みます。

FIE画像との対応
読み込み可能なTIFFファイルを以下に示します TIFFファイル、FIE画像オブジェクトのパラメータが以下と異なる場合はエラーとなります。
FIE画像オブジェクトとTIFFファイルのPHOTOMETRICとの対応関係
  FIEオブジェクトの画素タイプ
bin uc8 us16 s16 double rgbq
TIFFTAG_PHOTOMETRIC MINISWHITE  
MINISBLACK  
RGB  
PALETTE      
MASK      
SEPARATED        
YCBCR        
CIELAB        
ICCLAB        
ITULAB        
LOGL          
LOGLUV        

FIE画像オブジェクトのチャネル数
  FIEオブジェクトの画素タイプ
bin uc8 us16 s16 double rgbq
TIFFTAG_PHOTOMETRIC MINISWHITE 1 1 1 1 1  
MINISBLACK 1 1 1 1 1  
RGB   3 3 3 3 1
PALETTE   3 3     1
MASK   3 3     1
SEPARATED   3       1
YCBCR   3       1
CIELAB   3       1
ICCLAB   3       1
ITULAB   3       1
LOGL   1        
LOGLUV   3       1

TIFFファイルのチャネル数
  FIEオブジェクトの画素タイプ
bin uc8 us16 s16 double rgbq
TIFFTAG_PHOTOMETRIC MINISWHITE 1or2 1or2 1or2 1or2 1or2  
MINISBLACK 1or2 1or2 1or2 1or2 1or2  
RGB   3or4 3or4 3or4 3or4 3or4
PALETTE   1or2 1or2     1or2
MASK   1or2 1or2     1or2
SEPARATED   4or5       4or5
YCBCR   3or4       3or4
CIELAB   3or4       3or4
ICCLAB   3or4       3or4
ITULAB   3or4       3or4
LOGL   1or2        
LOGLUV   3or4       3or4

FIE画像オブジェクトのビット深度
  FIEオブジェクトの画素タイプ
bin uc8 us16 s16 double rgbq
TIFFTAG_PHOTOMETRIC MINISWHITE 1 8 16 16 64  
MINISBLACK 1 8 16 16 64  
RGB   8 16 16 64 8
PALETTE   8 16     8
MASK   8 16     8
SEPARATED   8       8
YCBCR   8       8
CIELAB   8       8
ICCLAB   8       8
ITULAB   8       8
LOGL   8        
LOGLUV   8       8

TIFFファイルのビット深度
  FIEオブジェクトの画素タイプ
bin uc8 us16 s16 double rgbq
TIFFTAG_PHOTOMETRIC MINISWHITE 1 2〜8 9〜16 16 64  
MINISBLACK 1 2〜8 9〜16 16 64  
RGB   2〜8 9〜16 16 64 8
PALETTE   8 16     8
MASK   8 16     8
SEPARATED   8       8
YCBCR   8       8
CIELAB   8       8
ICCLAB   8       8
ITULAB   8       8
LOGL   8        
LOGLUV   8       8
TIFFファイルの読み込みでは、上記した対応表に当てはまらない条件があります。 以下に、それらの条件をまとめます。
  • CMYK、YCbCr、L*a*b* 、L*u*v*などの各色空間は、RGB色空間に変換後、FIE画像オブジェクトに格納されます。 対応するビット深度は8ビットのみとなります。
  • RGBのそれぞれのデータが、個々にまとめて保存されています。 対応するビット深度は8ビットのみとなります。
  • TIFFファイルは、白黒のピクセル値の0が黒か白かを自由に設定することができます。 対象となるのは、2値白黒画像とグレー画像です。 F_IMG_BIN、F_IMG_UC8、F_IMG_US16においては、黒が0となるように変換後、FIE画像オブジェクトに読み込まれます。 ただし、TIFFTAG_SAMPLEFORMATとして指定されているF_IMG_S16、F_IMG_DOUBLEは、 変換せずそのままの値がFIE画像オブジェクトに読み込まれます。
  • TIFFファイルが複数ページの場合、最初のページのみが読み込まれます。 2ページ以降は無視されます。
hImg パラメータには読み込み先画像オブジェクトを指定します。 *hImg へ既に確保された画像オブジェクトを指示した場合は、その画像オブジェクトに対して画像を読み込みます。 この際 *hImg へ指定する画像は必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等がTIFFファイルと異なっている場合には、本関数内部で自動的にリサイズを行います。 *hImg へNULLが指定された場合には、本関数内部で自動的にルート画像を確保し *hImg へ代入して返します この場合、ユーザーは *hImg が不要になった後に fnFIE_free_object() をコールしてメモリを解放してください。
使用例
// エラー処理は省略しているので注意して下さい。
#include "fie.h"

VOID sample1()
{
    FHANDLE himg = NULL;

    // TIFFファイルを読み込みます。
    // F_COLOR_IMG_TYPE_UC8 は、カラー画像を読み込む際に、FIEオブジェクトの画素タイプを指定します。
    // F_COLOR_IMG_TYPE_UC8 は、F_IMG_UC8 の 3チャネル
    // F_COLOR_IMG_TYPE_RGBQ は、F_IMG_RGBQUAD の1チャネルに対応しています。
    fnFIE_load_tiff( "test.tiff", &himg, F_COLOR_IMG_TYPE_UC8 );

    // TIFFファイルへ書き込みます。
    // 圧縮には、F_TIFF_COMPRESSION_DEFLATE を指定します。
    // F_TIFF_COMPRESSION_DEFLATE は、gzipの圧縮アルゴリズムで保存します。
    // TIFFは、複数の圧縮アルゴリズムを選択することができます。
    // デフォルトの圧縮レベルを指定します。
    fnFIE_save_tiff( "result.tiff", himg, F_TIFF_COMPRESSION_DEFLATE, -1 );

    fnFIE_free_object( himg );

    return;
}

// コールバック関数の例
// 処理の進行状況をパーセンテージで取得します。
BOOL callback( VOID *vpData, DOUBLE percentage )
{
    // vpDataは、一つ前に呼び出されたときの、percentageの値を保持
    if( vpData ){
        if( *( (DOUBLE* )vpData ) > percentage )
            return FALSE;

         *( (DOUBLE* )vpData ) = percentage;
    }
    return TRUE;
}

// 低レベル関数を使用した場合
VOID sample2()
{
    FHANDLE himg = NULL;
    F_IMG_INFO tiff_info;
    DOUBLE percentage;
    DOUBLE *p_percentage = NULL;    // コールバック関数の呼び出し時に渡される任意のポインタ
    INT depth;                      // TIFFファイルのビット深度

    // 低レベル関数では、メモリ確保は自身で行う必要があります。
    // そのために、TIFFファイルの内容を確認します。
    fnFIE_check_tiff_info( "test.tiff", F_COLOR_IMG_TYPE_UC8, &tiff_info );

    // TIFFファイル読み込みのためのメモリを確保します。
    himg = fnFIE_img_root_alloc( tiff_info.type, tiff_info.channel, tiff_info.width, tiff_info.height );
    percentage = 0;
    p_percentage = &percentage;

    // TIFFファイルを読み込みます。
    // TIFFファイルとFIE画像オブジェクトのビット深度は、必ずしも同じではない場合があるため、必要に応じて取得します。
    // 進行状況を確認するために、コールバック関数を指定します。
    // コールバック関数は、省略可能です。
    fnFIE_load_core_tiff( "test.tiff", himg, &depth, (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    // TIFFファイルへ書き込みます。
    // FIE画像オブジェクトは、白黒画像(FIE_IMG_BIN)であるとして F_TIFF_COMPRESSION_CCITTFAX4 を指定します。
    // F_TIFF_COMPRESSION_CCITTFAX は圧縮レベルを指定できないため、-1 は無視されます。
    percentage = 0;
    fnFIE_save_core_tiff( "result.tiff", himg, F_TIFF_COMPRESSION_CCITTFAX4, -1, depth,
                          (F_IMG_CALLBACK)callback, (VOID*)p_percentage );

    fnFIE_free_object( himg );

    return;
}

INT main()
{
    // FIEライブラリの使用前に必ずコールする必要があります。
    fnFIE_setup();

    sample1();
    sample2();

    // 終了処理
    fnFIE_teardown();

    return 0;
}
引数:
[in] filename 読み込むTIFFファイル名
[out] hImg 読み込み先ルート画像オブジェクトハンドルのポインタ
[in] type FIE画像オブジェクトの、F_IMG_UC8、またはF_IMG_RGBQUADで保存可能な場合の画素タイプを指定する。 それ以外のタイプでは無視される。
  • F_IMG_UC8で保存する場合は、F_COLOR_IMG_TYPE_UC8を指定
  • F_IMG_RGBQUADで保存する場合は、F_COLOR_IMG_TYPE_RGBQを指定
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO TIFFファイルのオープン失敗
F_ERR_UNSUPPORTED_IMAGE_FILE 不正なTIFFファイルを読み込んだ
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_read_imgdata ( FHANDLE *  himg,
fvstream s,
INT *  size 
)

[[OSS]] 画像データ読込

独自形式の画像データをストリームからFIE画像オブジェクトに読込みます。

himg パラメータには読込先画像オブジェクトを指定します。 *himg へ既に確保された画像オブジェクトを指示した場合は、 その画像オブジェクトに対して画像を読み込みます。 この際 *himg へ指定する画像は必ずルート画像でなければなりません。 また、指定されたルート画像の幅や高さ等が画像データと異なっている 場合には、本関数内部で自動的にリサイズが行われます。 *himg へNULLが指定された場合には、本関数内部で自動的に ルート画像を確保し *himg へ代入して返します。 この場合、ユーザーは *himg が不要になった後に fnFIE_free_object() を コールしてメモリを解放する必要があります。

NULL ハンドルを fnFIE_write_imgdata() にて保存していた場合は *himg には NULL が代入されます。このとき、本関数へのエントリー時に *himg!=NULL であれば本関数内部で fnFIE_free_object() により この画像は解放されます。

引数:
[out] himg 読込み先ルート画像オブジェクトハンドル
[in] s 読込むストリーム
[out] size ストリームから読み込まれたサイズ(バイト単位)。
不要な場合はNULLを指定可能です。
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO BMPファイルのオープン失敗
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_write_imgdata ( FHANDLE  himg,
fvstream s,
INT  comp_level,
INT *  size 
)

[[OSS]] 画像データ書込

指定の画像を独自形式の画像データにてストリームへ書き込みます。 本関数はFIEライブラリで確保出来る全ての画像形式に対応しています。

なお himg パラメータにて指定される画像は ルート画像でもチャイルド画像でも構いません。 チャイルド画像が指定された場合には、チャイルド画像のサイズと 同じサイズの画像データが生成されます。ただし読込関数の fnFIE_read_imgdata() はルート画像への読込しか行えない事に注意してください。

himg に NULL が指定された場合は、NULLハンドルである という情報が保存されます。この場合は正常終了となり、F_ERR_NONE が返されます。

引数:
[in] himg 出力する画像( type: 全形式 )
[in] s 出力先ストリーム
[in] comp_level 圧縮レベル(-1〜9)
  • -1: 標準圧縮(6を指定したのと同じ)
  • 0: 圧縮無し
  • 1: 圧縮弱・高速 〜 9: 圧縮強・低速
[out] size ストリームへ書き込まれたサイズ(バイト単位)。
不要な場合はNULLを指定可能です。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正なFIE画像オブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_FILE_IO BMPファイルのオープン失敗
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:46 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2