FineKernelToolKit  3.1.0
公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_Image クラス

画像を生成、管理するクラス [詳解]

+ FK_CLI::fk_Image の継承関係図
+ FK_CLI::fk_Image 連携図

公開メンバ関数

 fk_Image ()
 コンストラクタ1 [詳解]
 
 fk_Image (int W, int H)
 コンストラクタ [詳解]
 
 ~fk_Image ()
 デストラクタ [詳解]
 
 !fk_Image ()
 ファイナライザ [詳解]
 
void Init (void)
 初期化メソッド [詳解]
 
void NewImage (int w, int h, bool initFlg)
 画像領域生成メソッド1 [詳解]
 
void NewImage (int w, int h)
 画像領域生成メソッド2 [詳解]
 
void CopyImage (fk_Image^ image)
 画像データコピーメソッド1 [詳解]
 
void CopyImage (fk_Image^ image, int x, int y)
 画像データコピーメソッド2 [詳解]
 
bool SubImage (fk_Image^ image, int x, int y, int w, int h)
 画像データ部分抽出メソッド [詳解]
 
int GetR (int x, int y)
 ピクセルR要素取得メソッド [詳解]
 
int GetG (int x, int y)
 ピクセルG要素取得メソッド [詳解]
 
int GetB (int x, int y)
 ピクセルB要素取得メソッド [詳解]
 
int GetA (int x, int y)
 ピクセルA要素取得メソッド [詳解]
 
bool SetRGBA (int x, int y, int r, int g, int b, int a)
 ピクセル RGBA 値設定メソッド [詳解]
 
bool SetRGB (int x, int y, int r, int g, int b)
 ピクセル RGB 値設定メソッド [詳解]
 
bool SetR (int x, int y, int r)
 ピクセル R 値設定メソッド [詳解]
 
bool SetG (int x, int y, int g)
 ピクセル G 値設定メソッド [詳解]
 
bool SetB (int x, int y, int b)
 ピクセル B 値設定メソッド [詳解]
 
bool SetA (int x, int y, int a)
 ピクセル A 値設定メソッド [詳解]
 
void FillColor (fk_Color^ color)
 バッファ全体初期化メソッド1 [詳解]
 
void FillColor (int r, int g, int b, int a)
 バッファ全体初期化メソッド2 [詳解]
 
void FillColor (int r, int g, int b)
 バッファ全体初期化メソッド3 [詳解]
 
bool ReadBMP (String^ fileName)
 BMP ファイル入力メソッド [詳解]
 
bool ReadPNG (String^ fileName)
 PNG ファイル入力メソッド [詳解]
 
bool ReadJPG (String^ fileName)
 JPEG ファイル入力メソッド [詳解]
 
bool WriteBMP (String^ fileName, bool transFlg)
 BMP ファイル出力メソッド1. [詳解]
 
bool WriteBMP (String^ fileName)
 BMP ファイル出力メソッド2. [詳解]
 
bool WritePNG (String^ fileName, bool transFlg)
 PNG ファイル出力メソッド1. [詳解]
 
bool WritePNG (String^ fileName)
 PNG ファイル出力メソッド2. [詳解]
 
bool WriteJPG (String^ fileName, int quality)
 JPEG ファイル出力メソッド1. [詳解]
 
bool WriteJPG (String^ fileName)
 JPEG ファイル出力メソッド2. [詳解]
 

プロパティ

fk_Color^  default[int, int] [get, set]
 画素プロパティ [詳解]
 
fk_Dimension^  Size [get]
 画像サイズプロパティ [詳解]
 
fk_Dimension^  BufferSize [get]
 画像バッファサイズプロパティ [詳解]
 

詳解

画像を生成、管理するクラス

このクラスは、画像データを制御する機能を提供します。 主な利用用途はテクスチャ画像の管理ですが、 画像処理のための基本的な機能を保持しています。 画像データは RGBA 形式で保存されます。 各要素は整数値で最小値は 0、最大値は 255 です。 透過色要素は 0 が完全な透明、255 が完全な不透明を表します。 現バージョンのピクセルサイズの最大値は縦幅横幅共に 65536 までです。

実際の画像サイズと、格納するデータについての関係は BufferSize プロパティの覚え書きを参照して下さい。

参照
fk_Rect, fk_Dimension, fk_Texture

構築子と解体子

FK_CLI::fk_Image::fk_Image ( )

コンストラクタ1

空画像を生成します。

FK_CLI::fk_Image::fk_Image ( int  W,
int  H 
)

コンストラクタ

引数
[in]W画像の横幅
[in]H画像の縦幅
FK_CLI::fk_Image::~fk_Image ( )

デストラクタ

FK_CLI::fk_Image::!fk_Image ( )

ファイナライザ

関数詳解

void FK_CLI::fk_Image::Init ( void  )

初期化メソッド

画像データを初期化します。 画像サイズも (0, 0) となります。

void FK_CLI::fk_Image::NewImage ( int  w,
int  h,
bool  initFlg 
)

画像領域生成メソッド1

画像データを与えられたサイズに従って生成します。

引数
[in]w画像の横幅
[in]h画像の縦幅
[in]initFlgtrue の場合は、 データ全体を色値 (0, 0, 0, 0) で初期化します。 false の場合は初期化を行いませんが、 その場合でも横幅が変更されたときは 各ピクセルの縦横関係が崩れてしまう可能性があります。
void FK_CLI::fk_Image::NewImage ( int  w,
int  h 
)

画像領域生成メソッド2

画像データを与えられたサイズに従って生成します。 データ全体の色値は (0, 0, 0, 0) で初期化します。

引数
[in]w画像の横幅
[in]h画像の縦幅
void FK_CLI::fk_Image::CopyImage ( fk_Image image)

画像データコピーメソッド1

画像データを別インスタンスからコピーします。 この引数形式の場合、画像サイズは元画像データと同一となります。

引数
[in]image元画像インスタンス
void FK_CLI::fk_Image::CopyImage ( fk_Image image,
int  x,
int  y 
)

画像データコピーメソッド2

画像データの部分矩形領域を、別インスタンスの画像データ内容に書き換えます。 この引数形式では、画像中の一部分となる任意領域を書き換えることが可能ですが、 コピー元となる画像全体がコピー先の中に完全に収まるような配置である必要があります。 この条件を満たさなかった場合は、データの書き換えを行いません。 配置の際の座標系は fk_Rect の座標系に従います。

引数
[in]image元画像インスタンス
[in]x書き換え領域左上の x 座標
[in]y書き換え領域左上の y 座標
bool FK_CLI::fk_Image::SubImage ( fk_Image image,
int  x,
int  y,
int  w,
int  h 
)

画像データ部分抽出メソッド

別インスタンス中にある画像データの部分矩形領域をコピーします。 指定した矩形領域は全て元画像内に収まっている必要があります。 領域の座標系は fk_Rect の座標系に従います。

引数
[in]image元画像インスタンス
[in]x抽出矩形領域左上の x 座標
[in]y抽出矩形領域左上の y 座標
[in]w抽出矩形領域の横幅
[in]h抽出矩形領域の縦幅
int FK_CLI::fk_Image::GetR ( int  x,
int  y 
)

ピクセルR要素取得メソッド

ピクセルのR(赤)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
戻り値
ピクセルのR(赤)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int FK_CLI::fk_Image::GetG ( int  x,
int  y 
)

ピクセルG要素取得メソッド

ピクセルのG(緑)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
戻り値
ピクセルのG(緑)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int FK_CLI::fk_Image::GetB ( int  x,
int  y 
)

ピクセルB要素取得メソッド

ピクセルのB(青)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
戻り値
ピクセルのB(青)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int FK_CLI::fk_Image::GetA ( int  x,
int  y 
)

ピクセルA要素取得メソッド

ピクセルのA(透過度)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
戻り値
ピクセルのA(透過度)要素値。 指定した座標が画像内にない場合は、-1 を返します。
bool FK_CLI::fk_Image::SetRGBA ( int  x,
int  y,
int  r,
int  g,
int  b,
int  a 
)

ピクセル RGBA 値設定メソッド

ピクセルの RGBA 各色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
[in]aA(赤)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool FK_CLI::fk_Image::SetRGB ( int  x,
int  y,
int  r,
int  g,
int  b 
)

ピクセル RGB 値設定メソッド

ピクセルの RGB 各色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool FK_CLI::fk_Image::SetR ( int  x,
int  y,
int  r 
)

ピクセル R 値設定メソッド

ピクセルの R 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]rR(赤)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool FK_CLI::fk_Image::SetG ( int  x,
int  y,
int  g 
)

ピクセル G 値設定メソッド

ピクセルの G 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]gG(緑)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool FK_CLI::fk_Image::SetB ( int  x,
int  y,
int  b 
)

ピクセル B 値設定メソッド

ピクセルの B 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]bB(青)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool FK_CLI::fk_Image::SetA ( int  x,
int  y,
int  a 
)

ピクセル A 値設定メソッド

ピクセルの A 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]aA(透過度)要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
void FK_CLI::fk_Image::FillColor ( fk_Color color)

バッファ全体初期化メソッド1

画像データ内の全てのピクセルを同一色で初期化します。 初期化の際には、実際の表示領域ではない部分についても更新を行います。 格納データについては BufferSize プロパティの覚え書きを参照して下さい。

引数
[in]color色要素値
void FK_CLI::fk_Image::FillColor ( int  r,
int  g,
int  b,
int  a 
)

バッファ全体初期化メソッド2

画像データ内の全てのピクセルを同一色で初期化します。 初期化の際には、実際の表示領域ではない部分についても更新を行います。 格納データについては BufferSize プロパティの覚え書きを参照して下さい。

引数
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
[in]aA(赤)要素値
void FK_CLI::fk_Image::FillColor ( int  r,
int  g,
int  b 
)

バッファ全体初期化メソッド3

画像データ内の全てのピクセルを同一色で初期化します。 初期化の際には、実際の表示領域ではない部分についても更新を行います。 透過値は 0 に設定します。 格納データについては BufferSize の覚え書きを参照して下さい。

引数
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
bool FK_CLI::fk_Image::ReadBMP ( String^  fileName)

BMP ファイル入力メソッド

BMP (Windows Bitmap) 形式のファイルからデータを読み込みます。

引数
[in]fileNameファイル名
戻り値
入力に成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::ReadPNG ( String^  fileName)

PNG ファイル入力メソッド

PNG 形式のファイルからデータを読み込みます。

引数
[in]fileNameファイル名
戻り値
入力に成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::ReadJPG ( String^  fileName)

JPEG ファイル入力メソッド

JPEG 形式のファイルからデータを読み込みます。

引数
[in]fileNameファイル名
戻り値
入力に成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WriteBMP ( String^  fileName,
bool  transFlg 
)

BMP ファイル出力メソッド1.

画像データを BMP (Windows Bitmap) 形式でファイルに保存します。

引数
[in]fileNameファイル名
[in]transFlgtrue の場合、透過色要素をファイル中に書き出します。 透過色要素は本来 BMP 形式では標準でサポートされておらず、 FK によって利用する画像ファイルの独自拡張となっています。 ただし、透過色要素を埋め込んだ画像ファイルは一般のアプリケーションでも (透過色が追加されていないデータとして)読み込むことは可能です。 false の場合は、データ中の透過色要素をファイルには出力しません。
戻り値
書き出しに成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WriteBMP ( String^  fileName)

BMP ファイル出力メソッド2.

画像データを BMP (Windows Bitmap) 形式でファイルに保存します。

引数
[in]fileNameファイル名
戻り値
書き出しに成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WritePNG ( String^  fileName,
bool  transFlg 
)

PNG ファイル出力メソッド1.

画像データを PNG 形式でファイルに保存します。

引数
[in]fileNameファイル名
[in]transFlgtrue の場合、透過色要素をファイル中に書き出します。 false の場合は、データ中の透過色要素をファイルには出力しません。
戻り値
書き出しに成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WritePNG ( String^  fileName)

PNG ファイル出力メソッド2.

画像データを PNG 形式でファイルに保存します。

引数
[in]fileNameファイル名
戻り値
書き出しに成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WriteJPG ( String^  fileName,
int  quality 
)

JPEG ファイル出力メソッド1.

画像データを JPEG 形式でファイルに保存します。 なお、JPEG 形式は透過がサポートされていないので、 画像中に透過色データを出力することはできません。

引数
[in]fileNameファイル名
[in]quality画像の品質を設定します。 品質が高いほどファイルのサイズは大きくなります。 100 が最高品質、0 が最低品質となります。範囲外の数値が入力された場合、 上下限に丸められます。
戻り値
書き出しに成功すれば true、失敗すれば false を返します。
bool FK_CLI::fk_Image::WriteJPG ( String^  fileName)

JPEG ファイル出力メソッド2.

画像データを JPEG 形式でファイルに保存します。 なお、JPEG 形式は透過がサポートされていないので、 画像中に透過色データを出力することはできません。 本メソッドは WriteJPG(String^, int) において、 品質値を 80 に設定した場合と同一の挙動となります。

引数
[in]fileNameファイル名
戻り値
書き出しに成功すれば true、失敗すれば false を返します。

プロパティ詳解

fk_Color^ FK_CLI::fk_Image::default[int, int]
getset

画素プロパティ

各画素色値の設定や参照を行います。

image[100, 100] = new fk_Color(0.3, 0.4, 0.5);
fk_Dimension^ FK_CLI::fk_Image::Size
get

画像サイズプロパティ

画像サイズの参照を行います。

fk_Dimension^ FK_CLI::fk_Image::BufferSize
get

画像バッファサイズプロパティ

fk_Image では、本来の画像サイズに対し、 格納するデータ領域はより大きなものとなっています。 このプロパティは、実際に確保しているデータ領域の大きさを fk_Dimension 型で取得するものです。

覚え書き
fk_Image のデータ格納がこのような仕様になっている理由は、 古い OpenGL の仕様に基づきます。 ver 2.0 以前の OpenGL では、 テクスチャ画像として与えられるデータ領域について、 横幅と縦幅は $ 2^n $ で表される 整数値でなければならないという制約がありました。 (縦幅と横幅は同一である必要はありません。) また、OpenGL の 2.0 以降をサポートしたハードウェアであっても、 $ 2^n $ 以外の幅であった場合に 描画速度が著しく低下する場合があるという報告もあります。 このような理由から、 fk_Image では内部データで幅を $ 2^n $ となるように補正しています。