实例如下:
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数组互相转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。