当前位置:   article > 正文

Java BufferImage 转换 Base64 传送至前端 和 图片没有中文_bufferreimage转换为base64

bufferreimage转换为base64

Java BufferImage 转换 Base64 传送至前端

首先这是个坑  大坑  

首先是我这边是生成图片 用Java里面的 画出来的

然后用的是 BufferImage 这个类 

我们是动态生成图片 然后把图片转换成base64 发送到web端接受  

但是坑爹的是 

转换过程中会出现几个令人帮亏的状况

1. 在转换成base64是 会在 base64字符串中 自动加上那个 \r\n

2. 在转换过程中可能图片过大 建议使用jpg 

3. 在前台接受过程中 因为http不支持中文等  所以会出现两边的 base64不一样  


下面是我的代码

Java 后端

  1. ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流
  2. ImageIO.write(png, "png", baos);//写入流中
  3. byte[] bytes = baos.toByteArray();//转换成字节
  4. BASE64Encoder encoder = new BASE64Encoder();
  5. String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串
  6. png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n
  7. return png_base64;

在前端JS 接受的时候需要解一下url

	decodeURI(data.res_data.png_url)//利用js自带的api 进行解码

ok 这样就可以直接使用我们传过去的base64 进行图片展示了

记得要我们传回去的参数前面加上 

  data:image/png;base64, 


这边需要注意的是 本地和服务器开发不一样 尤其是服务器是在linux环境下  linux java 默认是没有中文的 所以你在 画图的时候是没有中文展现出来 或出现乱码 

这个时候你需要 去设置java的字体 解决办法 

  http://download.csdn.net/download/flippy/5227161 这个资源太贵了 就是 需要5分

这样就可以了

可以按照自己的图片格式进行传参 和头信息  



声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号