java把图片转化成二进制
java把图片转化成二进制,debug调试的时候二进制后面出现3个点,比如:000000000...这3个点代表什么...
java 把图片转化成二进制,debug调试的时候二进制后面出现3个点,比如:000000000...
这3个点代表什么 展开
这3个点代表什么 展开
1个回答
展开全部
Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:
123456789101112131415161718192021222324
//图片到byte数组 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; }
另外,如果需要将byte[]存回图片或转为String,则:
123456789101112131415161718192021222324252627282930
//byte数组到图片 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("Make Picture success,Please find image in " + path); } catch(Exception ex) { 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数组转化成十进制 for(int k=0;k<data.length;k++){ buf[k] = data[k]<0?(data[k]+256):(data[k]); } //十进制转化成十六进制 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(); }
123456789101112131415161718192021222324
//图片到byte数组 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; }
另外,如果需要将byte[]存回图片或转为String,则:
123456789101112131415161718192021222324252627282930
//byte数组到图片 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("Make Picture success,Please find image in " + path); } catch(Exception ex) { 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数组转化成十进制 for(int k=0;k<data.length;k++){ buf[k] = data[k]<0?(data[k]+256):(data[k]); } //十进制转化成十六进制 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(); }
追问
我已经转换成二进制了,用的是另一种方法,因为我要转化一张以上,但值出来一张的信息,二进制后面还有3个点,是不是3个点代表着后续的二进制和另一张的图片和二进制
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询