FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_Image クラス

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

#include <CLI/FK_CLI/include/Image_CLI.h>

+ 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_Colordefault [int, int] [get, set]
 画素プロパティ
 
fk_DimensionSize [get]
 画像サイズプロパティ
 
fk_DimensionBufferSize [get]
 画像バッファサイズプロパティ
 

詳解

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

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

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

参照
fk_Rect, fk_Dimension, fk_Texture

構築子と解体子

◆ fk_Image() [1/2]

FK_CLI::fk_Image::fk_Image ( )

コンストラクタ1

空画像を生成します。

◆ fk_Image() [2/2]

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

コンストラクタ

引数
[in]W画像の横幅
[in]H画像の縦幅

◆ ~fk_Image()

FK_CLI::fk_Image::~fk_Image ( )

デストラクタ

◆ !fk_Image()

FK_CLI::fk_Image::!fk_Image ( )

ファイナライザ

関数詳解

◆ Init()

void FK_CLI::fk_Image::Init ( void  )

初期化メソッド

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

◆ NewImage() [1/2]

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

画像領域生成メソッド1

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

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

◆ NewImage() [2/2]

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

画像領域生成メソッド2

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

引数
[in]w画像の横幅
[in]h画像の縦幅

◆ CopyImage() [1/2]

void FK_CLI::fk_Image::CopyImage ( fk_Image image)

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

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

引数
[in]image元画像インスタンス

◆ CopyImage() [2/2]

void FK_CLI::fk_Image::CopyImage ( fk_Image image,
int  x,
int  y 
)

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

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

引数
[in]image元画像インスタンス
[in]x書き換え領域左上の x 座標
[in]y書き換え領域左上の y 座標

◆ SubImage()

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抽出矩形領域の縦幅

◆ GetR()

int FK_CLI::fk_Image::GetR ( int  x,
int  y 
)

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

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

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

◆ GetG()

int FK_CLI::fk_Image::GetG ( int  x,
int  y 
)

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

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

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

◆ GetB()

int FK_CLI::fk_Image::GetB ( int  x,
int  y 
)

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

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

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

◆ GetA()

int FK_CLI::fk_Image::GetA ( int  x,
int  y 
)

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

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

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

◆ SetRGBA()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ SetRGB()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ SetR()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ SetG()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ SetB()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ SetA()

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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

◆ FillColor() [1/3]

void FK_CLI::fk_Image::FillColor ( fk_Color color)

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

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

引数
[in]color色要素値

◆ FillColor() [2/3]

void FK_CLI::fk_Image::FillColor ( int  r,
int  g,
int  b,
int  a 
)

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

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

引数
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
[in]aA(赤)要素値

◆ FillColor() [3/3]

void FK_CLI::fk_Image::FillColor ( int  r,
int  g,
int  b 
)

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

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

引数
[in]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値

◆ ReadBMP()

bool FK_CLI::fk_Image::ReadBMP ( String^  fileName)

BMP ファイル入力メソッド

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

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

◆ ReadPNG()

bool FK_CLI::fk_Image::ReadPNG ( String^  fileName)

PNG ファイル入力メソッド

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

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

◆ ReadJPG()

bool FK_CLI::fk_Image::ReadJPG ( String^  fileName)

JPEG ファイル入力メソッド

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

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

◆ WriteBMP() [1/2]

bool FK_CLI::fk_Image::WriteBMP ( String^  fileName,
bool  transFlg 
)

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

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

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

◆ WriteBMP() [2/2]

bool FK_CLI::fk_Image::WriteBMP ( String^  fileName)

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

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

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

◆ WritePNG() [1/2]

bool FK_CLI::fk_Image::WritePNG ( String^  fileName,
bool  transFlg 
)

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

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

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

◆ WritePNG() [2/2]

bool FK_CLI::fk_Image::WritePNG ( String^  fileName)

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

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

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

◆ WriteJPG() [1/2]

bool FK_CLI::fk_Image::WriteJPG ( String^  fileName,
int  quality 
)

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

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

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

◆ WriteJPG() [2/2]

bool FK_CLI::fk_Image::WriteJPG ( String^  fileName)

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

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

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

プロパティ詳解

◆ default

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

画素プロパティ

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

image[100, 100] = new fk_Color(0.3, 0.4, 0.5);

◆ Size

fk_Dimension^ FK_CLI::fk_Image::Size
get

画像サイズプロパティ

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

◆ BufferSize

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 \) となるように補正しています。