首页 > 编程 > Java > 正文

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

2019-11-06 08:52:40
字体:
来源:转载
供稿:网友

java BufferImage 转换 Base64 传送至前端

首先这是个坑  大坑  

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

然后用的是 BufferImage 这个类 

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

但是坑爹的是 

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

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

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

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

下面是我的代码

Java 后端

	ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流        ImageIO.write(png, "png", baos);//写入流中        byte[] bytes = baos.toByteArray();//转换成字节        BASE64Encoder encoder = new BASE64Encoder();        String png_base64 =  encoder.encodeBuffer(bytes).trim();//转换成base64串        png_base64 = png_base64.replaceAll("/n", "").replaceAll("/r", "");//删除 /r/n        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分

这样就可以了

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表