实例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
//图片到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数组到图片 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(); } |
文件解析:
FileImageOutputStream 换成了 FileOutputStream
FileImageInputStream 换成 FileInputStream
以上这篇Java 图片与byte数组互相转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。