解决base64数组转jpg图片保存本地无法识别的问题
项目有要求前端截取图像向后台发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图片保存本地无法识别的问题相关推荐
- 转python 将base64字符串还原成图片保存
转python 将base64字符串还原成图片保存 import os,base64 strs='''/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwgHBgoICAgLC ...
- 用 Jupyter Notebook 爬取微博图片保存本地!
今天咱们用 Jupyter-Notebook 并结合框架(Selenium)模拟浏览器抓取微博图片并将图片保存本地. Selenium 是一个用电脑模拟人的操作浏览器网页,可以实现自动化测试,模拟浏览 ...
- python爬虫:爬取所有车标图片保存本地
python爬虫:爬取所有车标图片保存本地 这次没想到会这么轻松,找了几个网站分析结构发现腾讯汽车的json接口,很轻松爬下所有的图标.上图: 总共209个牌子,以车牌子命名. 分析网页 一开始找了好 ...
- 爬取美女图片保存本地与入MySQL库(宅男福利)
本文详细记录如何爬取美女图片,并将图片下载保存在本地,同时将图片url进行入库.保存在本地肯定是为了没事能拿出来养养眼啊,那入库就是为了定位图片啊,要懂点技术的话,还能搬运搬运做个小图片网站,不为别的 ...
- java实现base64字符串转换成图片保存
现在不管是博客论坛还是企业办公,都离不开资源的共享.通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的. ...
- Android 手机下载图片保存本地后,系统相册无法查看
下载图片到本地,由于没有通知系统相册,更新数据,导致系统相册无法找到这张图片. 处理方法一:已知图片保存地址,通过广播通知系统相册, 更新数据. public static void sendBroa ...
- 最全的Apache Doris教程(收藏版)共9万+字【第一篇】由于是typora编写,有部分图片在本地,识别不出来,请细聊我
1.Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超 ...
- 解决base64转 图片 视频保存本地无法识别的问题
项目有要求前端向后台发base64,后台接收base64转换成 图片 或者 视频 保存在本地. 这是前端代码 (没有问题) <!DOCTYPE html> <html lang=&q ...
- python 将base64字符串还原成图片保存
知乎登录验证码采用base64编码方式, 下面介绍将base64编码保存为图片 a = {"img_base64":"R0lGODdhkAFYAIcAAPn5+VVVVe ...
最新文章
- 华为即将发布AI新品,发力“深度学习”
- 【ANDROID游戏开发十六】ANDROID GESTURE之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!...
- 小公司如何提高效率?
- [文摘20070913]最好的消息
- 问题生成的多样性会在多大程度上帮助下游QA任务?
- 欢乐暑假-高校俱乐部暑期线上编程竞赛奖励机制
- 程序员太牛了 公司年会整成代码讨论会
- Spring获取JavaBean的xml形式和注解形式
- java利用htmlparser得到网页html内容
- 从零打造springboot+freemarker+layui实现简易CMS管理系统(一)
- 1小时学会JQuery
- 阿里rocketmq与自建rocketmq
- linux环境nginx-1.10.3安装
- sqlite 常用数据类型
- 微软威胁情报中心总经理 John Lambert 谈安全
- Java 分布式框架面试题合集
- 解决CAJ阅读器读取学位论文卡到爆炸的问题
- thinkpadx1mdt 网络启动_二二、MDT 2013 Update 1批量部署-硬件驱动使用、驱动库建立及自动识别...
- yytextview多种格式_YYText之图文混排
- fiddler视频分析