English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
以下の例です:
//画像をバイト配列に変換 public byte[] image2byte(String path){ byte[] data = null; FileImageInputStream input = null; try { input = new FileImageInputStream(new File(path)); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int numBytesRead = 0; while ((numBytesRead = input.read(buf)) != -1) { output.write(buf, 0, numBytesRead); } data = output.toByteArray(); output.close(); input.close(); } catch (FileNotFoundException ex1) { ex1.printStackTrace(); } catch (IOException ex1) { ex1.printStackTrace(); } return data; } //バイト配列を画像に変換 public void byte2image(byte[] data,String path){ if(data.length<3||path.equals("")) return; try{ FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path)); imageOutput.write(data, 0, data.length); imageOutput.close(); System.out.println("画像作成成功、画像を探してください ") + path); } System.out.println("Exception: "); + ex); ex.printStackTrace(); } } //byte配列から16進数文字列 public String byte2string(byte[] data){ if(data == null || data.length <=1) return "0x"; if(data.length >200000) return "0x"; StringBuffer sb = new StringBuffer(); int buf[] = new int[data.length]; //byte配列を10進数に変換 for(int k=0;k<data.length;k++{ buf[k] = data[k] < 0 &63;(data[k]+256) : (data[k]); } //十進数を16進数に変換 for(int k=0;k<buf.length;k++{ if(buf[k] <16) sb.append("0"+Integer.toHexString(buf[k]); else sb.append(Integer.toHexString(buf[k])); } return "0x"+sb.toString().toUpperCase(); }
ファイル解析:
FileImageOutputStreamをFileOutputStreamに変更
FileImageInputStreamをFileInputStreamに変更
このJava画像とbyte配列の相互変換の例は、編集者が皆さんに提供した全ての内容です。皆さんに参考になれば幸いですし、呐喊チュートリアルを多くのサポートをお願いします。