⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getpicfromrec.java

📁 读取资源包的工具
💻 JAVA
字号:
//png格式//0x89 0x50//0x60 0x82//MID 格式//0x4D 0x54//0x2F 0x00//gif  格式// 0x47 0x49 0x00 0x3B// 0x00 0x3Bimport java.io.*;class GetPicFromRec {  public GetPicFromRec(){}  public static final void main(String args[]){    System.out.println("*****************************************************");    System.out.println("*                                                   *");    System.out.println("*                                                   *");    System.out.println("*                ---daibou007---                    *");    System.out.println("*                ---2007.6.25---                    *");    System.out.println("*     ---http://daibou007.blog.163.com/---          *");    System.out.println("*                                                   *");    System.out.println("*****************************************************");    System.out.println("");    System.out.println("");    System.out.println("");    GetPicFromRec thisClass = new GetPicFromRec();    System.out.println("-------------开始读取文件---------------");    System.out.println("");    System.out.println("");    System.out.println("");    byte[] tempArray = new byte[102400];//    tempArray = thisClass.getTheByteFromRec("bom");       if(args[0]!= null){           thisClass.ResString = args[0];           tempArray = thisClass.getTheByteFromRec(args[0]);         }         else{         System.out.println("-------------文件名错误或文件不存在---------------");         System.exit(0);    }    System.out.println("-------------开始导出PNG图片---------------");    System.out.println("");    System.out.println("");    thisClass.picNumber = 0;    thisClass.setStartAndEnd(tempArray,0);    thisClass.writePic(tempArray,0);    if(thisClass.picNumber!= 0){      System.out.println("PNG图片个数:" + thisClass.picNumber);    }else{       System.out.println("没有PNG图片");    }    System.out.println("");    System.out.println("");    System.out.println("-------------导出PNG图片完毕---------------");    System.out.println("-------------开始导出MID音乐---------------");    System.out.println("");    System.out.println("");    thisClass.setStartAndEnd(tempArray,1);    thisClass.writePic(tempArray,1);    if(thisClass.picNumber!= 0){      System.out.println("MID音乐个数:" + thisClass.picNumber);    }else{      System.out.println("没有MID音乐");    }    System.out.println("");    System.out.println("");    System.out.println("-------------导出MID音乐完毕---------------");    System.out.println("-------------开始导出WAV音乐---------------");    System.out.println("");    System.out.println("");    thisClass.getWavStartAndLength(tempArray);    thisClass.writePic(tempArray,2);    if(thisClass.picNumber!= 0){      System.out.println("WAV音乐个数:" + thisClass.picNumber);    }else{       System.out.println("没有WAV音乐");    }    System.out.println("");    System.out.println("");   System.out.println("-------------导出WAV音乐完毕---------------");   System.out.println("");   System.out.println("-------------退出程序---------------");   System.exit(0);  }  public byte[] getTheByteFromRec(String stringOfFile){    InputStream in;    int  fileLenght;    byte [] storeFileByByte = new byte [1024];    try{        in = new FileInputStream(stringOfFile);        fileLenght = in.available();        System.out.println("fileLength:"+fileLenght);        if(fileLenght > 0)          storeFileByByte = new byte [fileLenght];        in.read(storeFileByByte);        //close the in.        if(in!=null)in.close();    }catch(Exception e){      System.out.println("文件不存在,或者文件名不正确!!!");      System.exit(0);    }    return storeFileByByte;  }  //存储起始和末位索引。  int start[];  int end[];  int picNumber;//图片个数  String ResString;  byte formatSymbol[][]={      // png  2  2      {(byte)0x89, (byte)0x50,(byte)0x4E,(byte)0x42,(byte)0x60, (byte)0x82},      //mid  3   3      {(byte)0x4D, (byte)0x54,(byte)0x68,(byte)0xFF,(byte)0x2F, (byte)0x00},      //wav      {(byte)0x52, (byte)0x49, (byte)0x46, (byte)0x46},  };  String fileName[] ={      ".png",      ".mid",      ".wav"  };//int formatIndex 为那个格式索引。public void setStartAndEnd(byte[] picArray,int formatIndex){  switch(formatIndex){    case 0: //png      for(int i = 0; i< picArray.length - 2;i++){       if(picArray[i] == formatSymbol[formatIndex][0] && picArray[i + 1] == formatSymbol[formatIndex][1]&& picArray[i + 2] == formatSymbol[formatIndex][2] ){          picNumber++;       }     }     System.out.println("png图片一个也没有:" + picNumber);     if( picNumber!=0 ){    //存储开始点和结束点     start = new int[picNumber];     end  = new int [picNumber];     int ArrayIndex = 0;     for(int j = 0; j < picArray.length - 2 ; j++){       if(picArray[j] == formatSymbol[formatIndex][0] && picArray[j + 1] == formatSymbol[formatIndex][1] && picArray[j + 2] == formatSymbol[formatIndex][2]) {//开始         start[ArrayIndex] = j;         ArrayIndex++;       }       if(picArray[j] == formatSymbol[formatIndex][3]&&picArray[j + 1] == formatSymbol[formatIndex][4]&& picArray[j + 2] == formatSymbol[formatIndex][5] ) {//结束         end[ArrayIndex - 1] = j + 2;       }     }     }     break;     case 1://mid       for(int i = 0; i< picArray.length - 2;i++){         if(picArray[i] == formatSymbol[formatIndex][0] && picArray[i + 1] == formatSymbol[formatIndex][1]&& picArray[i + 2] == formatSymbol[formatIndex][2] ){           picNumber++;         }       }        System.out.println("mid音乐一个也没有:" + picNumber);       if( picNumber!= 0 ){         //存储开始点和结束点         start = new int[picNumber];         end  = new int [picNumber];         int ArrayIndex = 0;         for(int j = 0; j < picArray.length - 2 ; j++){           if(picArray[j] == formatSymbol[formatIndex][0] && picArray[j + 1] == formatSymbol[formatIndex][1] && picArray[j + 2] == formatSymbol[formatIndex][2]) {//开始             start[ArrayIndex] = j;             ArrayIndex++;           }           if(picArray[j] == formatSymbol[formatIndex][3]&&picArray[j + 1] == formatSymbol[formatIndex][4]&& picArray[j + 2] == formatSymbol[formatIndex][5] ) {//结束             end[ArrayIndex - 1] = j + 2;           }         }       }       break;     }}//输出为图片文件public void writePic( byte[] arrayPic ,int formatIndex){  String [] fileNameArray = new String[picNumber];  for(int i = 0;i < picNumber;i++){    fileNameArray[i] = ResString + i + fileName[formatIndex];    System.out.println("导出的资源文件名:"+fileNameArray[i]);  }  File [] file = new File[fileNameArray.length];  for(int i = 0;i < fileNameArray.length;i++){    file[i] = new File(fileNameArray[i]); }  try{    FileOutputStream fos ;      for(int i = 0;i < file.length;i++){        fos = new FileOutputStream(file[i]);        if(formatIndex == 2)//wav          fos.write(arrayPic,WavArray[i],wavLength[i]);        else//其他          fos.write(arrayPic,start[i],end[i] - start[i] + 1);        fos.flush();        fos.close();      }  }catch(Exception e){  } System.out.println("成功导出:" + picNumber + "资源!!");picNumber = 0;}//wav  格式// 4 字节  RIFF     4 字节 long  长度  int [] WavArray;  int [] wavLength;public void getWavStartAndLength(byte[] picArray){  picNumber = 0;  System.out.println("get the wav");  for(int i = 0; i< picArray.length - 3;i++){    if(picArray[i] == formatSymbol[2][0] && picArray[i + 1] == formatSymbol[2][1]&& picArray[i + 2] == formatSymbol[2][2]&& picArray[i + 3] == formatSymbol[2][3]  ){      picNumber++;    }  }  WavArray  = new int[picNumber];  wavLength = new int[picNumber];  int ArrayIndex = 0; for(int i = 0; i< picArray.length - 3;i++){   if(picArray[i] == formatSymbol[2][0] && picArray[i + 1] == formatSymbol[2][1]&& picArray[i + 2] == formatSymbol[2][2]&& picArray[i + 3] == formatSymbol[2][3]  ){     WavArray[ArrayIndex] = i;     ArrayIndex++;   } }  System.out.println("起始坐标:"+ WavArray[0]); ArrayIndex = 0; for(int i = 0; i< picArray.length - 8;i++){   if(picArray[i] == formatSymbol[2][0] && picArray[i + 1] == formatSymbol[2][1]&& picArray[i + 2] == formatSymbol[2][2]&& picArray[i + 3] == formatSymbol[2][3]  ){      byte tempArray[]={picArray[i + 7] , picArray[i+6] , picArray[i+5] , picArray[i+4] };      wavLength[ArrayIndex]= byteArray4ToInt(tempArray) + 8;      System.out.println("实际单位文件长度:"+ picArray.length);      System.out.println("计算单位文件长度:" + wavLength[ArrayIndex]);      ArrayIndex++;    }  }} //*************************工具函数************************  //   取正  private   int   toInt(byte   b){    if(b   >=   0)      return   (int)b;    else      return   (int)(b   +   256);  }  private   int   byteArray4ToInt(byte[]   byteValue){    if(byteValue.length   !=   4)      return   0;    int   intValue   =   0;    try{      intValue   =   toInt(byteValue[0]);      intValue   =   (intValue   <<   8)   +   toInt(byteValue[1]);      intValue   =   (intValue   <<   8)   +   toInt(byteValue[2]);      intValue   =   (intValue   <<   8)   +   toInt(byteValue[3]);    }    catch(Exception   e){      e.printStackTrace();    }    return   intValue;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -