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

    xiaoxiao2021-04-17  51

    刚入行的菜鸟一枚,最近遇到一个问题就是将数据库中存储的照片写到生成的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("新图片已生成!"); 第一次写东西,希望会有所帮助。写的不好请多多包涵!!
    转载请注明原文地址: https://ju.6miu.com/read-674300.html

    最新回复(0)