ホーム > デベロッパ > BREW FAQ

BREW FAQ : 画像

ビットマップの画像サイズを取得するには?

ビットマップの画像サイズを取得するには、 IBitmap インターフェイスの IBITMAP_GetInfo 関数を使用します。 IBITMAP_GetInfo 関数を使うと、ビットマップの情報を AEEBitmapInfo 構造体として取得できます。

AEEBitmapInfo 構造体は、以下のように定義されています。

typedef struct {
 uint32  cx;      // ビットマップの幅
 uint32  cy;      // ビットマップの高さ
 uint32  nDepth;  // 色深度のビット数
} AEEBitmapInfo;

SophiaFramework では、SFBBitmap::GetInfo 関数を使用します。

【 コード例 】

続きを読む »

      

ビットマップを描画するには?

ビットマップを描画するには、 IDisplay インターフェイスの IDISPLAY_BitBlt 関数や IBitmap インターフェイスの IBITMAP_BltIn 関数を使用します。

SophiaFramework では、 SFXGraphics::BitBlt 関数、SFBDisplay::BitBlt関数やSFBBitmap::BltIn 関数を使用します。

【 コード例 】

続きを読む »

      

ビットマップを拡大して描画するには?

ビットマップを拡大して描画するには、 ITransform インターフェイスの ITRANSFORM_TransformBltSimple 関数、 もしくは、ITRANSFORM_TransformBltComplex 関数を使用します。

単純な拡大表示を行うのであれば、ITRANSFORM_TransformBltSimple 関数を使用します。

SophiaFramework では、 SFBTransform::TransformBltSimple 関数や SFBTransform::TransformBltComplex 関数を使用します。

【 コード例 】

続きを読む »

      

IBitmap インターフェイスと IImage インターフェイスの違いは?

IBitmap インターフェイスと IImage インターフェイスには、以下の違いがあります。

  • IBitmap インターフェイスは、ビットマップを扱うためのインターフェイスです。
    デバイス ビットマップや BMP の表示や編集が行えます。
    また、BMP の表示だけを行うのであれば、IImage インターフェイスよりも高速な処理が可能です。
  • IImage インターフェイスは、BMP、PNG、JPEG、BCI の各形式の画像を表示するインターフェイスです。
    デバイス ビットマップを扱うことはできません。
      

透過色をもつビットマップを描画するには?

透過色をもつビットマップを描画するには、 IBITMAP_SetTransparencyColor 関数を使用して透過色を設定します。

デフォルトの透過色は、マゼンタ色(R:255, G:0, B:255)です。

その後、引数に AEE_RO_TRANSPARENT を指定して、IDISPLAY_BitBlt などの描画関数を呼び出します。

SophiaFramework では、 SFBBitmap::SetTransparencyColor を使用して透過色を設定します。

その後、引数に AEE_RO_TRANSPARENT を指定して SFBDisplay::BitBlt などの描画関数を呼び出します。

【 コード例 】

続きを読む »

      

JPEG 8bit グレースケール画像は描画できますか?

「BREW API リファレンス 2.0」には、 IImage インターフェイスにより JPEG 画像をロードできると記述されていますが、 実際にJPEG 画像をロードできるかどうかは実機に依存します。

また、その処理内容も実機により変化する可能性があります。


当社の調査では、JPEG 8bit グレースケール画像を表示すると 色が変化してしまうことを確認しております。

この現象はエミュレーターおよびいくつかの実機で発生します。


グレースケール以外の JPEG 画像は正常に描画されます。

また、PNG 8bit グレースケール画像は IImage インターフェイスにより 正常に描画されます。

      

Windows BMP 以外の形式の画像でも、透過色は扱えますか。

WindowsBMP 以外の (IImage インターフェイスでのみ扱うことができる) 形式の画像でも、透過色は扱えます。

例として PNG 形式の画像を元に説明をします。透過モードで PNG 形式の画像をデバイスピットマップに転送するには、以下の手順を踏みます。このとき、使用する PNG 形式の画像は、透過設定をして作成してください。

[手順]

  • 1. ISHELL_LoadResImage() を使用して、リソース ファイルから PNG 形式の画像を取得します。
  • 2. IIMAGE_SetParm() の第 2 引数に IPARM_ROP を、第三引数に AEE_RO_TRANSPARENT を設定して呼び出します。これにより、イメージ画像を透過モードで扱います。
  • 3. IIMAGE_Draw() を呼び出し、デバイスビットマップにイメージ画像を描画します。
  • 4. IDISPLAY_Update() を呼び出し、画面を更新します。

続きを読む »

      

IDisplay インターフェースのインスタンスを ISHELL_CreateInstance() で作成できますか?

Display インターフェースのインスタンスは 1 つのアプリにつき 1 つ、アプリ起動時に自動的に生成されます。

ISHELL_CreateInstance() を使っても、これと異なる IDisplay インターフェースのインスタンスを作成できません。

      

アイコンに使用する PNG 画像を透過色にするには?

アイコンを透過色に設定するには 8 ビット/24 ビット透過 PNG 画像を使用します。

機種依存がありますので、詳しくはキャリアまたは端末メーカーにお問合せください。

      

BREW の透過色と PNG 画像の背景色との関係は?

24 ビットの透過 PNG および不透過 PNG、8 ビットの不透過 PNG は、IIMAGE_Draw() により透明にはなりません。

一方、8 ビットの透過 PNG で透過色が設定された場合のみ、IIMAGE_Draw() により透明になります。

この際、8 ビット PNG で背景色として設定されたパレットだけが透明になります。

ただしパレット 0 番が透過色として設定されていない場合、その色で描画されます。

また IBITMAP_SetTransparencyColor() を呼び出しても IIMAGE_Draw() による描画には影響を与えません

      

JPEG 形式で保存した画像ファイルを読み込むには?

JPEG 画像をファイルから読み込み描画するには、次のようにします。

  1. IFileMgr インターフェイスのインスタンスを作成します。
  2. JPEG 画像をファイルから読み込みます。
  3. AEECLSID_JPEG を使用して、IImage インターフェイスのインスタンスを作成します。
  4. IIMAGE_Notify 関数を使用して、コールバック関数を登録します。
  5. IIMAGE_SetStream 関数を使用して、IImage インターフェイスに、ファイルから読み込んだ JPEG 画像を設定します。
  6. コールバック関数内で、IIMAGE_Draw() を使用して、JPEG 画像を描画します。

[注意] BREW SDK 2.1 のエミュレーターでは、AEECLSID_JPEG が未対応のクラス ID のようです。このため、エミュレーターでは JPEG 画像の表示ができません。

      

カメラ画像をJPEG形式でファイル保存できますか?

機種によっては、ICAMERA_SetVideoEncode、ICAMERA_SetMediaData、ICAMERA_EncodeSnapshot の各関数を使用することで JPEG 形式のカメラ画像をファイルに保存できます。

詳しくは、キャリアもしくは端末メーカーにお問合せください。

      

BCI ファイルとは?

BCI ファイルとは、BREW Compressed Image 作成ツール ( BCI ツール )で作成される圧縮ファイルのことです。

IImage インターフェイスを使って、画像やアニメーションなどの BCI ファイルを表示します。

      

BREW Compressed Image (圧縮画像) 作成ツールとは?

BREW Compressed Image 作成ツール (以降、BCI ツール) とは、 画像の圧縮やアニメーションを作成するツールです。

このツールで作成した画像は、BCI 形式でファイル (以降、BCI ファイル) に保存されます。

BCI ファイルとは、BCI ツールで作成される圧縮ファイルの形式です。

IImage インターフェイスを使用して BCI ファイルを扱うと、 携帯電話上で簡単に圧縮画像やアニメーションの表示ができます。

詳細は、『BREW BCI ガイド』を参照してください。

      

画像形式によって動作のパフォーマンスは異なりますか?

画像の読み込み速度や描画速度は機種に依存します。

以下の対比表に BMP、PNG、JPEG の各形式の読み込み時間の比較値を記載します。 この表は BMP を 1 とした場合の値で、値が大きいほど読み込みに時間が掛かります。

機種 BMP PNG JPEG
A5304T 1 8.5 100
A5501T 1 4.5 5.5

※ 読み込み時間は、あくまで目安です。

      

JPEG や PNG を拡大して描画するには?

JPEG や PNG の拡大、縮小はサポートされていません。

ビットマップの拡大、縮小はサポートされています。

そこで、JPEG や PNG を拡大して描画する場合はビットマップに画像を描画し、ITRANSFORM_TransformBltComplex() や ITRANSFORM_TransformBltSimple() を使用します。

SophiaFramework では、 SFBTransform::TransformBltSimple 関数や SFBTransform::TransformBltComplex 関数を使用して、ビットマップに描画後の PNG イメージを拡大します。

以下のサンプルコードでは、 PNG イメージをリソースファイルから読み込み、 2 倍に拡大して表示します。

続きを読む »

      

DDB とは?

DDB (デバイス デペンデント ビットマップ) とは、 携帯電話の画面表示に利用されている低レベルなビットマップです。

DDB はハードウェア処理に適した形式をしている反面、 携帯電話のハードウェアごとに形式が異なる可能性があるという欠点があります。

また、DDB はデバイス ビットマップと呼ばれる事もあります。

      

DIB とは?

DIB (デバイス インディペンデント ビットマップ) とは、ハードウェアに依存しない形式のビットマップです。

DIB を利用することにより、異なる機種の携帯電話やパソコンとの間でビットマップの交換が可能になります。

      

BREW 2 Bit Tool とは?

BREW 2 Bit Tool とは、4 ビットの BMP 形式のビットマップ (以降、ビットマップ) と 2 ビットのビットマップを変換するツールです。

このツールを使用すると、Windows に付属のペイント ツールでは作成できない 2 ビット (モノクロ 4 階調) のビットマップが作成できます。

2 ビットのビットマップを使用する利点は、画像サイズを小さくできることです。 白と黒の濃淡で画像を作成する場合に使用します。

BREW アプリで 2 ビットのビットマップを使用する場合は、 IBitmap インターフェイスを使用します。

詳細は、『BREW ユーティリティ ガイド』の「BREW 2 Bit Tool の使用」を参照してください。