java实现读取flash的swf文件属性

it2022-05-09  22

** flashattrib.java */ package picattrib; import java.io.IOException; import java.io.FileInputStream; public class flashattrib { public flashattrib() { } public static void main(String[] args) { flashattrib flashattrib = new flashattrib(); byte[] bb=null; image1 im = null; try { bb=flashattrib.readFromFile("d:\\aa.swf"); im = flashattrib.getAttrib(bb); System.out.println(im.getWidth()); System.out.println(im.getHight()); bb=flashattrib.readFromFile("d:\\bb.swf"); im = flashattrib.getAttrib(bb); System.out.println(im.getWidth()); System.out.println(im.getHight()); bb=flashattrib.readFromFile("d:\\bb.swf"); im = flashattrib.getAttrib(bb); System.out.println(im.getWidth()); System.out.println(im.getHight()); } catch (IOException ex1) { System.out.println(ex1); } System.out.println(im.getWidth()); System.out.println(im.getHight()); /* byte aa=0; for (int i=0;i<260;i++){ System.out.println(flashattrib.getInt(aa++)); } */ } /** * @param bb byte[] * @param start int * @param leng int * @return int */ public int getWeizhi(int start,int weizhi,int leng,byte[] bb){ int aa=0; if (weizhi==0) { aa=getInt(bb[start]); for (int i=1;i<leng;i++){ aa*=256; int cc=getInt(bb[start+i]); aa+=cc; } }else{ aa=getInt(bb[start]); aa*=256; aa+=getInt(bb[start+1]); aa*=16; aa+=getInt(bb[start+2])/16; } return aa; } public image1 getAttrib(byte[] bb){ image1 im=new image1(); //flash文件的宽高位置不固定,分为8种,根据第9位的值,来判断当前flash文件的具体宽高位置 //16进制50,58,60,68,70,78,80,88 switch(bb[8]){ case 80: im.setWidth(getWeizhi(9,0,2,bb)/10); im.setHight(getWeizhi(11,1,2,bb)/10); break; case 88: im.setWidth(getWeizhi(9,1,2,bb)/40); im.setHight(getWeizhi(12,0,2,bb)/10); break; case 96: im.setWidth(getWeizhi(9,1,2,bb)/10); im.setHight(getWeizhi(12,1,2,bb)/10); break; case 104: im.setWidth(getWeizhi(10,0,2,bb)/40); im.setHight(getWeizhi(13,0,2,bb)/10); break; case 112: im.setWidth(getWeizhi(10,0,2,bb)/10); im.setHight(getWeizhi(13,1,2,bb)/10); break; case 120: im.setWidth(getWeizhi(10,1,2,bb)/40); im.setHight(getWeizhi(14,0,2,bb)/10); break; case -128: im.setWidth(getWeizhi(10,1,2,bb)/10); im.setHight(getWeizhi(14,1,2,bb)/10); break; case -120: im.setWidth(getWeizhi(10,0,3,bb)/40); im.setHight(getWeizhi(15,0,2,bb)/10); break; } return im; } public int getInt(byte bb){ if (bb>=0) return bb; else return 256+bb; } private static byte[] readFromFile(String fileName) throws IOException { PicsModel model = null; FileInputStream fin = new FileInputStream(fileName); byte [] buf = new byte[fin.available()]; fin.read(buf); fin.close(); return buf; } } /* image1.java */ package picattrib; public class image1 { private int width; private int hight; private int leng; public image1() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } public static void main(String[] args) { image1 image1 = new image1(); } private void jbInit() throws Exception { } public void setWidth(int width) { this.width = width; } public void setHight(int hight) { this.hight = hight; } public void setLeng(int leng) { this.leng = leng; } public int getWidth() { return width; } public int getHight() { return hight; } public int getLeng() { return leng; } } 如有不明者请于qq:43714802联系

转载于:https://www.cnblogs.com/nanshouyong326/archive/2008/08/22/1273939.html

相关资源:数据结构—成绩单生成器

最新回复(0)