3D技術研究所Wiki > 公開物 > TGAReader

TGAReaderについてまとめています。

目次


TGAReaderについて

TGAReaderはTGA(Targa)画像の読み込みを行う小さなプログラムです。
開発はJavaで行っており、C言語に移植されたものもありますので、
Java, C, C++, Objective-Cなどの言語から利用可能です。

特徴はTGAのフォーマットとは無関係にARGB32ビット配列を
指定したバイトオーダーで作成するようになっており、
TGAのフォーマットを意識することなくシンプルにコーディングできるようになっています。

ライセンスはMITライセンスですので安心してお使い下さい。

https://github.com/npedotnet/TGAReader/blob/master/LICENSE

TGAReader.png

GWTを使ってブラウザ上でTGA画像を利用することもできます。
http://npe-net.appspot.com/npesdk/gwt/tgaimagedemo/index.html

tgaimagedemo.png

TGA画像のWebGL(GwtGL)デモ
http://npe-net.appspot.com/npesdk/gwt/tgawebgldemo/index.html

tgawebgldemo.png

GoogleChrome, FireFox, Safariで動作確認済み。
IEでは動作しません。

使い方

1. ソースコードをダウンロードしてプロジェクトへ追加します

https://github.com/npedotnet/TGAReader

githubからソースコードをダウンロードして下さい。

Java

TGAReader.javaをプロジェクトに追加してpackage名を変更して下さい

C

tga_reader.c, tga_reader.hをプロジェクトへ追加して下さい

2. TGA画像のバイト配列を用意します

Java

1
2
3
4
FileInputStream fis = new FileInputStream(new File("test.tga"));
byte [] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();

C

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "tga_reader.h"

FILE *file = fopen("test.tga", "rb");
if(file) {
    int size;
    fseek(file, 0, SEEK_END);
    size = ftell(file);
    fseek(file, 0, SEEK_SET);

    unsigned char *buffer = (unsigned char *)tgaMalloc(size);
    fread(buffer, 1, size, file);
    fclose(file);
}

3. 色の並びを指定してピクセルデータを作成します

色の並びJavaC用途
ARGBTGAReader.ARGBTGA_READER_ARGBjava.awt.image.BufferedImage作成
android.graphics.Bitmap作成
ABGRTGAReader.ABGRTGA_READER_ABGROpenGL Texture(GL_RGBA)作成
iOS UIImage作成

Java

1
2
3
4
byte [] buffer = ...;
int [] pixels = TGAReader.read(buffer, TGAReader.ARGB);
int width = TGAReader.getWidth(buffer);
int height = TGAReader.getHeight(buffer);

C

1
2
3
4
unsigned char *buffer = ...;
int *pixels = tgaRead(buffer, TGA_READER_ABGR);
int width = tgaGetWidth(buffer);
int height = tgaGetHeight(buffer);

4. プラットフォームに合わせた使い方をして下さい

5. 解放処理をします

※C言語版のみです

C

1
2
3
4
5
6
unsigned char *buffer = ...;
int *pixels = tgaRead(buffer, TGA_READER_ABGR);
if(pixels) {
    tgaFree(pixels);
}
tgaFree(buffer);

メモリマネジメント

※C言語版のみです

もし独自のメモリマネジメントシステムをお使いの場合は tgaMalloc(), tgaFree() をカスタマイズして下さい。

C

1
2
3
4
5
6
7
void *tgaMalloc(size_t size) {
    return malloc(size);
}

void tgaFree(void *memory) {
    free(memory);
}

対応済み

  • 24bit/32bit カラーマップ(インデックス)イメージ、RGBカラーイメージ、グレースケールイメージ
  • 上記各々のランレングス圧縮イメージ
  • カラーマップ原点オフセット機能
  • 画像原点(左下、右下、左上、右上)

未対応

  • 画像タイプ0, 32, 33
  • 16bitRGBイメージ
  • TGAの出力
  • 画像原点オフセット機能


関連ページ


スポンサードリンク


添付ファイル: filetgawebgldemo.png 2273件 [詳細] filetgaimagedemo.png 5356件 [詳細] fileTGAReader.png 2097件 [詳細]
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS