// // Jarファイルのリソース // // 2000/ 8/25 宍戸 輝光 // import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; class jarres extends Frame implements ActionListener { Button btLoad,btExit; TextField txFn; BufferedImage biImg; jarres() { setLayout(new FlowLayout()); // レイアウト設定 biImg=new BufferedImage(32,32,BufferedImage.TYPE_3BYTE_BGR); btLoad=new Button("Load"); btLoad.addActionListener(this); btExit=new Button("Exit"); btExit.addActionListener(this); txFn=new TextField(24); add(txFn); add(btLoad); add(btExit); } public static void main(String args[]) { jarres jt=new jarres(); // アプリケーション生成 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 { // BMPファイルをリソースから読み込む InputStream fs=jarres.class.getResourceAsStream(fn); size=fs.available(); dat=new byte[size]; fs.read(dat); fs.close(); } catch (FileNotFoundException e) { System.out.println("File not found!"); return; } catch (IOException e) { return; } catch (ArrayIndexOutOfBoundsException e) {} // 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[length*height*5]; // コンソールにビットマップの情報表示 System.out.println("FileSize:"+size); System.out.println("Name:"+fn); System.out.println("Width:"+String.valueOf(width)); System.out.println("Height:"+String.valueOf(height)); // ピクセル列設定 for (int i=0;i