㈠ java web二进制流的图片如何用response返回给前台
FileOutputStream很明显你是用的文件流返回的
// 以byte流的方式打开文件 d:1.gif
FileInputStream hFile = new FileInputStream(url); //得到文件大小
int i=hFile.available();
byte data[]=new byte[i]; //读数据
hFile.read(data); //得到向客户端输出二进制数据的对象
OutputStream toClient=response.getOutputStream(); //输出数据
toClient.write(data);
toClient.flush();
toClient.close();
hFile.close();
(1)java二进制图片显示图片扩展阅读:
如果是纯文本使用字符流,如果二进制文件,使用字节流。
如果只是得到信息,原样不动,不进行修改操作,例如文件上传和下载,这时就使用字节流。文件上传:在服务器端把浏览器端信息提取出来。文件下载:把服务器端内容写给浏览器端。
如果要操作的是自定义信息,这时使用字符流。
通过response获取的输出流它的真实类型是什么?
ServletOutputStream response.getOutputStream();
PrintWriter response.getWriter();
ServletOutputStream由于使用字节流多数是原样复制,所以使用write方法,而不是print方法。
PrintWriter:打印流,两个特点:1.可以设置自动刷新。2.可以将信息原样输出。
㈡ Java中如何把图片转换成二进制流
Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:
//图片到byte数组
publicbyte[]image2byte(Stringpath){
byte[]data=null;
FileImageInputStreaminput=null;
try{
input=newFileImageInputStream(newFile(path));
ByteArrayOutputStreamoutput=newByteArrayOutputStream();
byte[]buf=newbyte[1024];
intnumBytesRead=0;
while((numBytesRead=input.read(buf))!=-1){
output.write(buf,0,numBytesRead);
}
data=output.toByteArray();
output.close();
input.close();
}
catch(FileNotFoundExceptionex1){
ex1.printStackTrace();
}
catch(IOExceptionex1){
ex1.printStackTrace();
}
returndata;
}
另外,如果需要将byte[]存回图片或转为String,则:
//byte数组到图片
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;
try{
=newFileImageOutputStream(newFile(path));
imageOutput.write(data,0,data.length);
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}
//byte数组到16进制字符串
publicStringbyte2string(byte[]data){
if(data==null||data.length<=1)return"0x";
if(data.length>200000)return"0x";
StringBuffersb=newStringBuffer();
intbuf[]=newint[data.length];
//byte数组转化成十进制
for(intk=0;k<data.length;k++){
buf[k]=data[k]<0?(data[k]+256):(data[k]);
}
//十进制转化成十六进制
for(intk=0;k<buf.length;k++){
if(buf[k]<16)sb.append("0"+Integer.toHexString(buf[k]));
elsesb.append(Integer.toHexString(buf[k]));
}
return"0x"+sb.toString().toUpperCase();
}
㈢ Java如何把二进制数据转换成图片
直接上代码了,应该看得懂吧,str字符串的内容就是你XML里的内容。生成的a.jpeg我也给上传上来了,是个报表噢
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importsun.misc.BASE64Decoder;
publicclassCodeTest{
publicstaticvoidmain(String[]args)throwsIOException{
Stringstr="hkMyt4m4VkJtstbv8A/1J9hYIAKg6IR2bHx8e+FcGtpiG8drKZ1/+3cqZRLaeZfaKJbanQ6GhoPOMM+mOReiXK9GrEcmdeM6oM6enpq+ml7+fovmZKLeub+mkKvqaM5qztq2treylNLetoc+/25M/S5Tse+rtnGVuy+bW1tvXx93Ywt7azcLk6dzc3PHcp/fkbOPdy9/f3+Dg4O7pjebi0+fj0+Tk5O3pz+3n2uzwrvjpxOrq6vDr2e/v3/Lu3+v2yvLv4O310/Pw3/Pw4PTx4PPx4/Dx8fTy4fXy4fXy5Pbz4vbz4/r3x//n25/n35vr36Pn46Pr46Pf3+Pr56fz46vj49/v56vj4+Pv66vz66fz66vz66/z67Pn+3/366v366/z77P376/377Pr6+v787f///ywAAAAAgwBVAAAI/wD////20XI9ivEunbzVqQaEa/eoDDhmhRckrDEuXf/ilXM+CHixI0Bv50cF2LYx5Ab+++A9/v/c/vC5xdOfcZsEwB7ASZXib3okbzc9T/++++BdrqnlQO5B+WopOYnqaFTihoqpndCqSeZE8H/+6u+//tuch/SfVUVK4XBXvsQ81O+1Cr515f1BNNvCmQVR7Ge+aDz+Z7pMGTzHHyHCMvm4/BHb33Xpu/WPL0TT//++PQbB/PIhGM/vstwCx/4AAgb/B2pY/3L3vxIJzrlOc9/0JueA4l3M4kZzX+wOV/9nmc+mw2PfnTj4MM+aJ/j6e6EKEyhClfIQq4FBAA7";
BASE64Decoderdecoder=newBASE64Decoder();
byte[]bytes=decoder.decodeBuffer(str);
Filefile=newFile("D:/a.jpeg");
FileOutputStreamfos=newFileOutputStream(file);
fos.write(bytes);
fos.flush();
fos.close();
}
}