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

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

#include <FK/Image.h>

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

公開メンバ関数

 fk_Image (int w=0, int h=0)
 コンストラクタ
 
virtual ~fk_Image ()
 デストラクタ
 
 fk_Image (const fk_Image &)
 コピーコンストラクタ
 
void init ()
 初期化関数
 
bool readBMP (const std::string fileName)
 BMP ファイル入力関数
 
bool readBMPData (fk_ImType *buf)
 BMP バッファ入力関数
 
bool readPNG (const std::string fileName)
 PNG ファイル入力関数
 
bool readPNGData (fk_ImType *buf)
 PNG データ入力用関数
 
bool readJPG (const std::string fileName)
 JPEG ファイル入力関数
 
bool writeBMP (const std::string fileName, const bool transFlg=false)
 BMP ファイル出力関数
 
bool writePNG (const std::string fileName, const bool transFlg=true)
 PNG ファイル出力関数
 
bool writeJPG (const std::string fileName, int quality=80)
 JPEG ファイル出力関数
 
void newImage (int w, int h, bool initFlg=true)
 画像領域生成関数
 
void copyImage (const fk_Image *image)
 画像データコピー関数1
 
void copyImage (const fk_Image *image, int x, int y)
 画像データコピー関数2
 
bool subImage (const fk_Image *image, int x, int y, int w, int h)
 画像データ部分抽出関数
 
int getWidth (void) const
 画像横幅取得関数
 
int getHeight (void) const
 画像縦幅取得関数
 
const fk_DimensiongetImageSize (void)
 画像サイズ取得関数
 
const fk_DimensiongetBufferSize (void)
 画像バッファサイズ取得関数
 
int getR (int x, int y) const
 ピクセルR要素取得関数
 
int getG (int x, int y) const
 ピクセルG要素取得関数
 
int getB (int x, int y) const
 ピクセルB要素取得関数
 
int getA (int x, int y) const
 ピクセルA要素取得関数
 
fk_Color getColor (int x, int y) const
 ピクセル色要素取得関数
 
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 値設定関数
 
bool setColor (int x, int y, const fk_Color &col)
 ピクセル色値設定関数
 
void fillColor (const fk_Color &col)
 バッファ全体初期化関数1
 
void fillColor (int r, int g, int b, int a=0)
 バッファ全体初期化関数2
 
const fk_ImType * getBufPointer (void) const
 画像データ配列先頭アドレス取得関数

 
- 基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
 fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
 コンストラクタ
 
fk_Type getObjectType (void) const
 タイプ取得関数
 

詳解

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

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

実際の画像サイズと、格納するデータについての関係は getBufferSize() 関数の覚え書きを参照して下さい。

参照
fk_Rect, fk_Dimension, fk_Texture

構築子と解体子

◆ fk_Image() [1/2]

FK::fk_Image::fk_Image ( int  w = 0,
int  h = 0 
)

コンストラクタ

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

◆ ~fk_Image()

virtual FK::fk_Image::~fk_Image ( )
virtual

デストラクタ

◆ fk_Image() [2/2]

FK::fk_Image::fk_Image ( const fk_Image )

コピーコンストラクタ

関数詳解

◆ init()

void FK::fk_Image::init ( )

初期化関数

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

◆ readBMP()

bool FK::fk_Image::readBMP ( const std::string  fileName)

BMP ファイル入力関数

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

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

◆ readBMPData()

bool FK::fk_Image::readBMPData ( fk_ImType *  buf)

BMP バッファ入力関数

BMP (Windows Bitmap) 形式のバッファからデータを読み込みます。 fk_ImType 型は、OpenGL をサポートしている環境においては GLubyte、 サポートしていない環境では unsigned char 型として定義されています。

引数
[in]bufデータバッファ
戻り値
入力に成功すれば true、失敗すれば false を返します。

◆ readPNG()

bool FK::fk_Image::readPNG ( const std::string  fileName)

PNG ファイル入力関数

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

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

◆ readPNGData()

bool FK::fk_Image::readPNGData ( fk_ImType *  buf)

PNG データ入力用関数

PNG 形式のバッファからデータを読み込みます。 fk_ImType 型は、OpenGL をサポートしている環境においては GLubyte、 サポートしていない環境では unsigned char 型として定義されています。

引数
[in]bufデータバッファ
戻り値
入力に成功すれば true、失敗すれば false を返します。

◆ readJPG()

bool FK::fk_Image::readJPG ( const std::string  fileName)

JPEG ファイル入力関数

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

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

◆ writeBMP()

bool FK::fk_Image::writeBMP ( const std::string  fileName,
const bool  transFlg = false 
)

BMP ファイル出力関数

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

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

◆ writePNG()

bool FK::fk_Image::writePNG ( const std::string  fileName,
const bool  transFlg = true 
)

PNG ファイル出力関数

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

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

◆ writeJPG()

bool FK::fk_Image::writeJPG ( const std::string  fileName,
int  quality = 80 
)

JPEG ファイル出力関数

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

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

◆ newImage()

void FK::fk_Image::newImage ( int  w,
int  h,
bool  initFlg = true 
)

画像領域生成関数

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

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

◆ copyImage() [1/2]

void FK::fk_Image::copyImage ( const fk_Image image)

画像データコピー関数1

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

引数
[in]image元画像データのアドレス

◆ copyImage() [2/2]

void FK::fk_Image::copyImage ( const fk_Image image,
int  x,
int  y 
)

画像データコピー関数2

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

引数
[in]image元画像データのアドレス
[in]x書き換え領域左上の x 座標
[in]y書き換え領域左上の y 座標

◆ subImage()

bool FK::fk_Image::subImage ( const 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抽出矩形領域の縦幅

◆ getWidth()

int FK::fk_Image::getWidth ( void  ) const

画像横幅取得関数

戻り値
横幅

◆ getHeight()

int FK::fk_Image::getHeight ( void  ) const

画像縦幅取得関数

戻り値
縦幅

◆ getImageSize()

const fk_Dimension * FK::fk_Image::getImageSize ( void  )

画像サイズ取得関数

戻り値
画像サイズのポインタ

◆ getBufferSize()

const fk_Dimension * FK::fk_Image::getBufferSize ( void  )

画像バッファサイズ取得関数

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

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

◆ getR()

int FK::fk_Image::getR ( int  x,
int  y 
) const

ピクセルR要素取得関数

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

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

◆ getG()

int FK::fk_Image::getG ( int  x,
int  y 
) const

ピクセルG要素取得関数

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

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

◆ getB()

int FK::fk_Image::getB ( int  x,
int  y 
) const

ピクセルB要素取得関数

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

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

◆ getA()

int FK::fk_Image::getA ( int  x,
int  y 
) const

ピクセルA要素取得関数

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

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

◆ getColor()

fk_Color FK::fk_Image::getColor ( int  x,
int  y 
) const

ピクセル色要素取得関数

ピクセルの色要素値を fk_Color 型で取得します。 座標系は fk_Rect の座標系に従います。

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

◆ setRGBA()

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

◆ setColor()

bool FK::fk_Image::setColor ( int  x,
int  y,
const fk_Color col 
)

ピクセル色値設定関数

ピクセルの色要素を fk_Color 型で設定します。 座標系は fk_Rect の座標系に従います。 座標が画像内になかった場合は、画像情報を変更しません。

引数
[in]xピクセルの x 座標
[in]yピクセルの y 座標
[in]col色要素値
戻り値
更新に成功した場合 true を、失敗した場合 false を返します。

◆ fillColor() [1/2]

void FK::fk_Image::fillColor ( const fk_Color col)

バッファ全体初期化関数1

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

引数
[in]col色要素値

◆ fillColor() [2/2]

void FK::fk_Image::fillColor ( int  r,
int  g,
int  b,
int  a = 0 
)

バッファ全体初期化関数2

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

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

◆ getBufPointer()

const fk_ImType * FK::fk_Image::getBufPointer ( void  ) const

画像データ配列先頭アドレス取得関数

画像データを実際に格納しているデータ配列の先頭アドレスを参照します。

警告
この関数は fk_Image の内部構造に強く依存します。 内部構造は今後の更新で変更される可能性があるため、 本関数を用いた場合は後方互換性が保証できません。 また、この関数を用いて得た内部データを更新した場合、 システム全体の整合性が維持できなくなる可能性があります。 上記の2点の理由から、この関数の利用は推奨しません。
戻り値
画像データ配列の先頭アドレス