用BASE64将二进制图片写到本地文件中

刚入行的菜鸟一枚,最近遇到一个问题就是将数据库中存储的照片写到生成的Word文档中。查阅了很多资料最终解决了这个问题。
我用的方法是在数据库中获取到存储的图片的二进制。将二进制流写到本地的文件夹中。然后从本地将图片导进Word中。
那么来看下我这种比较笨的解决方法。

Java代码:
jar包: base64-2.3.8.jar (自己可以下载)
	Blob blob=null;
	BufferedInputStream is=null;
	byte[] b=null;
	try{
	//我的是直接在数据库中查询出的存储在数据库中的图片的二进制
	//也可以用其他方法获取图片的二进制,例子也比较多
		rs=ps.executeQuery(sql);
		if(rs.next()){
	    	blob=rs.getBlob(1);//获取图片的二进制
		}
		is=new BufferedInputStream(blob.getBinaryStream());
		b=new byte[(int)blob.length]
 
   
		int len=b.length;
		int offset=0;
		int read=0;
		while(offset < len && (read=is.read(b,offset,len-offset))>=0){
		    offset+=read;
		}
	}
 
   
     BASE64Decoder decoder = new sun.misc.BASE64Decoder();
     BASE64Encoder encoder = new sun.misc.BASE64Encoder();
     try {
        String content = encoder.encodeBuffer(b).trim();
        byte[] bs = decoder.decodeBuffer(content);
        for (int ii = 0; ii < bs.length; ii++) {
           if (bs[ii] < 0) {
              //调整异常数据
              bs[ii] += 256;
           }
        }
        //生成jpeg图片
        String path = "D:\\Image\\a.jpg";// D:\Image这个路径可以自己指定。 a.jpg相当于一个模板(自认为)
        OutputStream outs = new FileOutputStream(path);
        outs.write(bs);
        outs.flush();
        outs.close();
        System.out.println("新图片已生成!");
		
	第一次写东西,希望会有所帮助。写的不好请多多包涵!!
 
  

你可能感兴趣的:(用BASE64将二进制图片写到本地文件中)