// // BMPファイル読み込みテスト // // 2000/ 5/12 宍戸 輝光 // import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; class jbmp extends Frame implements ActionListener { Button btExit,btLoad; BufferedImage biImg; jbmp() { setLayout(new FlowLayout()); // レイアウト設定 biImg=new BufferedImage(32,32,BufferedImage.TYPE_3BYTE_BGR); btExit=new Button("Exit"); // ボタン生成 btExit.addActionListener(this); // ボタンのイベントリスナ設定 btLoad=new Button("Load"); // ボタン生成 btLoad.addActionListener(this); // ボタンのイベントリスナ設定 add(btLoad); add(btExit); } public static void main(String args[]) { jbmp jt=new jbmp(); // アプリケーション生成 jt.pack(); jt.show(); } public void readBMP(String fn) { // BMP読み込み int size=0,offset=0,width=0,height=0,length=0; byte dat[]=new byte[10],pixel[]=new byte[10]; try { File f=new File(fn); size=(int)(f.length()); dat=new byte[size]; FileInputStream fs=new FileInputStream(fn); fs.read(dat); fs.close(); } catch (FileNotFoundException e) {} catch (IOException e) { return; } // 24BitBMPでなければ戻る if (dat[0]!='B' || dat[1]!='M' || dat[28]!=24) return; offset=dat[10]; // ピクセル列までのオフセット // ビットマップサイズ取得 if (dat[18]<0) width=(256+dat[18])+(int)dat[19]*256; else width=dat[18]+(int)dat[19]*256; if (dat[22]<0) height=(256+dat[22])+(int)dat[23]*256; else height=dat[22]+(int)dat[23]*256; if ((width*3) % 4==0) /* バッファの1ラインの長さを計算 */ length=width*3; else length=width*3+(4-(width*3) % 4); // ピクセル列配列取得 pixel=new byte[width*3*height]; // ピクセル列設定 for (int i=0;i