base64在java里重新转成图片,结果图片打不开

l584814283 2016-11-09 03:10:37
一个java项目,前端将图片转成base64的字符串,后端拿到字符串重新转换为图片并保存到本地,但是保存到本地的图片打开时却出现错误,以下是实现代码,代码中的base64字符串,是直接从网上的在线将图片转为base64转换的,可以使用任意图片

import java.io.FileOutputStream;
import java.io.OutputStream;

import sun.misc.BASE64Decoder;

public class Base64ToImg {
public static void base64ToFile(String base64)throws Exception{
BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] bytes1 = decoder.decodeBuffer(base64);
OutputStream out=new FileOutputStream("E://a.jpg");
out.write(bytes1);
out.flush();
out.close();
}
public static void main(String[] args) {
try {
//此处放base64字符串
String base64="";
base64ToFile(base64);
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果如图:
...全文
给本帖投票
13153 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mlzdev 2019-10-21
  • 打赏
  • 举报
回复
以上大佬说的都对
有点紧张m3 2019-08-27
  • 打赏
  • 举报
回复
如果发现去掉 “data:image/jpg;base64, ”之后,文件还是破损的或者下面这种情况,注意看一下 base64编码中的"+"号是不是被替换成""了,如果是则需要替换回来。完成以上两个地方的检查问题就不大了。特此感谢“https://blog.csdn.net/weixin_41162263/article/details/81876346
m0_37627490 2019-02-28
  • 打赏
  • 举报
回复
引用 5 楼 公孙二狗 的回复:
Base64 的图片还有一些前缀信息,例如 data:image/jpg;base64,,这个需要在保存图片的时候去掉

感谢感谢啊,你是对的
VitoYi 2017-12-04
  • 打赏
  • 举报
回复
引用 5 楼 Inhibitory 的回复:
Base64 的图片还有一些前缀信息,例如 data:image/jpg;base64,,这个需要在保存图片的时候去掉
感谢!!!
zjw973310202 2017-06-22
  • 打赏
  • 举报
回复
base64字符有个前缀,要截取掉。你打印下就看的到了
  • 打赏
  • 举报
回复
我也遇到了这样的问题,我是Android端,后台收到的图片打开就是提示错误。 你描述的解决办法,没听明白,哈哈哈,能具体点吗
bcsflilong 2016-11-24
  • 打赏
  • 举报
回复
引用 3 楼 a1091352041 的回复:
[quote=引用 2 楼 bcsflilong 的回复:] 前端 你是如何用base64加密的 ? 还是用的base64encoder 加密的吗? 如果不是,那么这就是造成你上述问题的原因 如果是 那么可能你是接受字符串的时候 字符串被平台处理了 那样就会造成文件丢失
感谢大哥!我把base64字符串拷到编辑器里,然后写入图片文件中,也是打不开。看了大哥这个解释后,我从图片中转base64字符串出来,在写到文件中就好了。[/quote]
Inhibitory 2016-11-22
  • 打赏
  • 举报
回复 12
Base64 的图片还有一些前缀信息,例如 data:image/jpg;base64,,这个需要在保存图片的时候去掉
a1091352041 2016-11-22
  • 打赏
  • 举报
回复
引用 2 楼 bcsflilong 的回复:
前端 你是如何用base64加密的 ? 还是用的base64encoder 加密的吗? 如果不是,那么这就是造成你上述问题的原因 如果是 那么可能你是接受字符串的时候 字符串被平台处理了 那样就会造成文件丢失
感谢大哥!我把base64字符串拷到编辑器里,然后写入图片文件中,也是打不开。看了大哥这个解释后,我从图片中转base64字符串出来,在写到文件中就好了。
bcsflilong 2016-11-10
  • 打赏
  • 举报
回复
前端 你是如何用base64加密的 ? 还是用的base64encoder 加密的吗? 如果不是,那么这就是造成你上述问题的原因 如果是 那么可能你是接受字符串的时候 字符串被平台处理了 那样就会造成文件丢失
l584814283 2016-11-09
  • 打赏
  • 举报
回复

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部