项目有要求前端截取图像向后台发base64数组,后台接收base64数组转换成jpg图片保存在本地,后续进行高斯滤波处理等。
问题就出在base64字符串转jpg图片这,解码输出部分的参考写法在这。
但是上面使用的sun.misc套件下的BASE64Encoder和BASE64Decoder这两个类别,我去参考另外一篇发现这是以前的写法,遂按照其更改为使用Java 8的java.util套件Base64类别。下面是我参考后修改的代码(有问题)。

static Base64.Decoder decoder = Base64.getMimeDecoder();
byte[] bytes1 = decoder.decode(images);
// images是base64字符串
String addr = "X:\\xxx\\b64ToImg.jpeg";
// addr是输出路径
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(addr));
// 将byte写入硬盘
imageOutput.write(bytes1, 0, bytes1.length);
imageOutput.close();

输出图片会显示
这玩意折磨了我两个小时,从输入结果查到输入输出流的定义都没觉得哪出问题了,甚至开始怀疑byte数组是不是需要jpeg编码才能生成图片……
其实就是很简单的事,参考第一篇参考博客
的评论:

kong wo:图片转base64为什么没有base头

您是kami!!!我立刻想到输出一下images查看一下有没有base头:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEB……

好家伙这不气人吗……
把images字符串修改一下,去掉base64头

//重要!!!去掉base64头
String images1 = images.substring(23);

最终修改后的代码如下:

static Base64.Decoder decoder = Base64.getMimeDecoder();
// 重要!!!去掉base64头
// images是base64字符串
// images1是切掉base64头的图片字符串
String images1 = images.substring(23);
byte[] bytes1 = decoder.decode(images1);
String addr = "X:\\xxx\\b64ToImg.jpeg";
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(addr));//打开输入流
imageOutput.write(bytes1, 0, bytes1.length);//将byte写入硬盘
imageOutput.close();

运行成功能存到可以正常预览的图片了……泪目。
这方法是笨了点,我只是提供一个思路推荐,其他方法可以比如说检测到第一个逗号之后去掉之前的内容啊etc……毕竟base64编码有很多种头但我项目只用到image/jpeg了所以就这样写了。

解决base64数组转jpg图片保存本地无法识别的问题相关推荐

  1. 转python 将base64字符串还原成图片保存

    转python 将base64字符串还原成图片保存 import os,base64 strs='''/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwgHBgoICAgLC ...

  2. 用 Jupyter Notebook 爬取微博图片保存本地!

    今天咱们用 Jupyter-Notebook 并结合框架(Selenium)模拟浏览器抓取微博图片并将图片保存本地. Selenium 是一个用电脑模拟人的操作浏览器网页,可以实现自动化测试,模拟浏览 ...

  3. python爬虫:爬取所有车标图片保存本地

    python爬虫:爬取所有车标图片保存本地 这次没想到会这么轻松,找了几个网站分析结构发现腾讯汽车的json接口,很轻松爬下所有的图标.上图: 总共209个牌子,以车牌子命名. 分析网页 一开始找了好 ...

  4. 爬取美女图片保存本地与入MySQL库(宅男福利)

    本文详细记录如何爬取美女图片,并将图片下载保存在本地,同时将图片url进行入库.保存在本地肯定是为了没事能拿出来养养眼啊,那入库就是为了定位图片啊,要懂点技术的话,还能搬运搬运做个小图片网站,不为别的 ...

  5. java实现base64字符串转换成图片保存

    现在不管是博客论坛还是企业办公,都离不开资源的共享.通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的. ...

  6. Android 手机下载图片保存本地后,系统相册无法查看

    下载图片到本地,由于没有通知系统相册,更新数据,导致系统相册无法找到这张图片. 处理方法一:已知图片保存地址,通过广播通知系统相册, 更新数据. public static void sendBroa ...

  7. 最全的Apache Doris教程(收藏版)共9万+字【第一篇】由于是typora编写,有部分图片在本地,识别不出来,请细聊我

    1.Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超 ...

  8. 解决base64转 图片 视频保存本地无法识别的问题

    项目有要求前端向后台发base64,后台接收base64转换成 图片 或者 视频 保存在本地. 这是前端代码 (没有问题) <!DOCTYPE html> <html lang=&q ...

  9. python 将base64字符串还原成图片保存

    知乎登录验证码采用base64编码方式, 下面介绍将base64编码保存为图片 a = {"img_base64":"R0lGODdhkAFYAIcAAPn5+VVVVe ...

最新文章

  1. 华为即将发布AI新品,发力“深度学习”
  2. 【ANDROID游戏开发十六】ANDROID GESTURE之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!...
  3. 小公司如何提高效率?
  4. [文摘20070913]最好的消息
  5. 问题生成的多样性会在多大程度上帮助下游QA任务?
  6. 欢乐暑假-高校俱乐部暑期线上编程竞赛奖励机制
  7. 程序员太牛了 公司年会整成代码讨论会
  8. Spring获取JavaBean的xml形式和注解形式
  9. java利用htmlparser得到网页html内容
  10. 从零打造springboot+freemarker+layui实现简易CMS管理系统(一)
  11. 1小时学会JQuery
  12. 阿里rocketmq与自建rocketmq
  13. linux环境nginx-1.10.3安装
  14. sqlite 常用数据类型
  15. 微软威胁情报中心总经理 John Lambert 谈安全
  16. Java 分布式框架面试题合集
  17. 解决CAJ阅读器读取学位论文卡到爆炸的问题
  18. thinkpadx1mdt 网络启动_二二、MDT 2013 Update 1批量部署-硬件驱动使用、驱动库建立及自动识别...
  19. yytextview多种格式_YYText之图文混排
  20. fiddler视频分析

热门文章

  1. 李开复写给中国大学生的第四封信
  2. php不做手术会怎么样,薇娅做手术上热搜!这种病年轻人高发,有人治了三年还没治好...
  3. asp.net视频教程于海涛
  4. (附源码)计算机毕业设计ssm大学校园兼职网站
  5. java如何把汉字转拼音
  6. NOI0107字符串最大跨距
  7. Datawhale的docker学习之旅
  8. ROS-gtest使用
  9. 伺服电机代替步进电机时应该注意那些细节?
  10. 用gcc生成静态库和动态库和使用opencv库编写打开摄像头压缩视频