3D技術研究所Wiki > TGAReader > TGA画像をAndroidアプリケーションで利用する

TGA画像をAndroidアプリケーションで利用する方法についてまとめています。

目次


TGA画像をAndroidアプリケーションで利用する

TGAReaderを利用して android.graphics.Bitmap を作成します。

TGABitmapViewer_Android.png

TGA画像をAndroidアプリケーションで利用するソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.example.tgabitmapviewer;

import java.io.IOException;
import java.io.InputStream;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

@SuppressLint("NewApi")
public class TGABitmapViewerActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GridLayout layout = new GridLayout(this);
        ScrollView scroll = new ScrollView(this);
        scroll.addView(layout);
        setContentView(scroll);
        
        try {
            String [] list = getAssets().list("images");
            
            // count tga images
            int count = 0;
            for(int i=0; i<list.length; i++) {
                if(list[i].endsWith(".tga")) count++;
            }
            
            layout.setColumnCount(3);
            layout.setRowCount(count/3);
            
            // create tga image view
            for(int i=0; i<list.length; i++) {
                if(list[i].endsWith(".tga")) {
                    LinearLayout view = createTGAView(list[i]);
                    if(view != null) layout.addView(view);
                }
            }
            
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private LinearLayout createTGAView(String name) {
        ImageView image = createTGAImageView("images/"+name);
        if(image != null) {
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(LinearLayout.VERTICAL);
            layout.addView(image);
            TextView label = new TextView(this);
            label.setText(name);
            label.setMaxWidth(128);
            label.setPadding(8, 8, 0, 0);
            layout.addView(label);
            return layout;
        }
        return null;
    }
    
    private ImageView createTGAImageView(String path) {
        Bitmap bitmap = createTGABitmap(path);
        if(bitmap != null) {
            ImageView imageView = new ImageView(this);
            imageView.setImageBitmap(bitmap);
            imageView.setAdjustViewBounds(true);
            imageView.setMaxWidth(128);
            imageView.setMaxHeight(128);
            imageView.setPadding(8, 8, 0, 0);
            return imageView;
        }
        return null;
    }
    
    private Bitmap createTGABitmap(String path) {
        Bitmap bitmap = null;
        try {
            InputStream is = getAssets().open(path);
            byte [] buffer = new byte[is.available()];
            is.read(buffer);
            is.close();
            
            int [] pixels = TGAReader.read(buffer, TGAReader.ARGB);
            int width = TGAReader.getWidth(buffer);
            int height = TGAReader.getHeight(buffer);
            
            bitmap = Bitmap.createBitmap(pixels, 0, width, width, height, Config.ARGB_8888);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }

}


関連ページ


スポンサードリンク


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