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

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

目次


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

DDS画像をSwingアプリケーションに組み込むサンプルです。
まず、DDSReaderを利用してDDS画像からBufferedImageを作成します。
次に生成したBufferedImageでImageIconを作成し、
最後に生成したImageIconでJLabelを作成します。
詳細はソースコードを参照して下さい。

DDSSwingBufferedImage.png

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

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
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class DDSSwingBufferedImage {
    
    private static final String [] DDS_PATHS = {
        "images/dds_DXT1.dds",
        "images/dds_DXT3.dds",
        "images/dds_DXT5.dds",
        "images/dds_A4R4G4B4.dds",
        "images/dds_R5G6B5.dds",
        "images/dds_A8B8G8R8.dds",
    };
    
    public static void main(String [] args) {
        try {
            JPanel panel = new JPanel();
            panel.setBackground(Color.ORANGE);
            for(int i=0; i<DDS_PATHS.length; i++) {
                panel.add(createDDSLabel(DDS_PATHS[i]));
            }
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setTitle("DDS Swing BufferedImage");
            frame.setSize(420, 310);
            frame.setVisible(true);
            frame.getContentPane().add(panel);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    private static JLabel createDDSLabel(String path) throws IOException {

        // DDS画像をバッファに読み込みます
        FileInputStream fis = new FileInputStream(path);
        byte [] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();

        // DDSReaderでBufferedImageを作成します
        int [] pixels = DDSReader.read(buffer, DDSReader.ARGB, 0);
        int width = DDSReader.getWidth(buffer);
        int height = DDSReader.getHeight(buffer);
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        image.setRGB(0, 0, width, height, pixels, 0, width);

        // JLabelにImageIconを追加します
        ImageIcon icon = new ImageIcon(image.getScaledInstance(128, 128, BufferedImage.SCALE_SMOOTH));
        return new JLabel(icon);
    }

}


関連ページ


スポンサードリンク


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