java base64 图片_java base64 图片_花旗甲比丹的博客-程序员秘密

技术标签: java base64 图片  

package com.xx.xx.xx;

import org.apache.commons.io.FileUtils;

import org.apache.commons.io.IOUtils;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

/**

* @Author: fy

* @Date: 2019/4/25 13:42

* @Description: base64 和图片的转化

*/

public class MyBase64PictureUtils {

/**

* 将图片转成base64 这种base64没有头信息,如 data:image/png;base64,

* @param picturePath 图片的绝对路径

* @return base64

*/

public static String picture2Base64(String picturePath){

InputStream in = null;

byte[] data = null;

try {

in = new FileInputStream(picturePath);

data = new byte[in.available()];

in.read(data);

BASE64Encoder encoder = new BASE64Encoder();

return encoder.encode(data);

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}finally {

IOUtils.closeQuietly(in);

}

}

/**

* 将base64转成图片,如果 base64以头信息开头如 data:image/png;base64,*****,需要将 data:image/png;base64,去掉才能转成图片

* @param base64

*/

public static void createPictureByBase64(String base64,String saveFilePath) throws Exception{

if(base64.startsWith("data:")){

base64 = base64.substring(base64.indexOf(",")+1);

}

BASE64Decoder decoder =new BASE64Decoder();

byte[] bytes = decoder.decodeBuffer(base64);

FileUtils.writeByteArrayToFile(new File(saveFilePath),bytes);

}

}

io包我用了 apache common-io里面工具。

java生成base64或者 生成图片是不需要data:image/png;base64 这样的头信息的。但是有时候前端传过来的图片base64包含这样的信息。所以如果要保存为图片,需要去掉这样的头信息。

毕竟浏览器直接使用base64资源,肯定是需要知道数据的类型的。

base64保存为图片的时候如果要求不高可是直接后缀为

C:\\***\\**\\**\\**.png ,否则就要去读取head信息里面的类型如 data:image/png;base64 ,或 data:image/jpeg;base64

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30999669/article/details/114413012

智能推荐

Backbone学习笔记---Model_weixin_30654583的博客-程序员秘密

Backbone中的model实际上包含了程序所要用到的一些交互数据,即给表现层提供数据,也为了从后台得到数据。例如我们可以用一个model来表示photo object,它需要包含一些属性,像tags, titles和location,看代码:var Photo=Backbone.Model.extend({ defaults:{ src:'plac...

JQuery DataGrid 中文文档_datagrid文档_LEE-MCICI的博客-程序员秘密

数据表格继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值。依赖关系控制面板缩放链接按钮分页使用方法table id="tt">table>  $('#tt').datagrid({      url:'datagrid_data.js

Tensor的索引与切片_One_T.的博客-程序员秘密

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.Numpy风格的索引2. 范围式索引 用冒号实现3. Selective Indexing1.Numpy风格的索引可以在一个方括号里写完所有索引,之间用逗号隔开就行import tensorflow as tfa = tf.random.normal([4, 28, 28, 3])print(a[1].shape)print(a[2, 3].shape)print(a[2, 4, 7].shape)print

RK3288:linux系统中MIPI接口的5寸LCD显示屏的调试_为了遇见你666的博客-程序员秘密

RK3288的LCD调试,根据屏幕规格书对dts作相应的修改基本都可点亮,配置也较为简单Platform: RockchipSoc: RK3288System: linux(buidroot)IC:NT35523内核:4.4先做一些准备工作,多看看LCD的手册提炼出来关键信息是:Hactive = 800 ,水平...

Android studio中的显式Intent和隐式Intent_android studio在第一个界面中包含第二个按钮,点击按钮以隐式intent方式打开第三_渴鱼的博客-程序员秘密

啊。肯德基绝对是这个世界上最伟大的发明,我已经在这里呆了将近六个小时了。。。虽然没有网(防止我这种人在肯德基蹭的时间太长了,所以就限制了一下下免费WIFI的使用时间也是可以理解的,hhhh)。 还有,Shift+Enter也是代码世界最伟大的发明,为什么Word里面不行?想要实现活动之间的跳转,我们至少也要有两个活动,之前我们有一个FirstActivity了,想在我们new一个Second...

KafuKa:代码实现_茂密头发的源猴的博客-程序员秘密

1:topic ,分区,groupID影响着分区当更换了groupID,以前没有记录过就从头开始消费(earliest),消费完毕,就会记录下来,在读就不会重复读取,//earliest:从头开始 --from-beginning //latest:从消费者启动之后当是latest,即使更换了groupID,也不会读取数据,消费者第一次启动才会读取数据2://props.setProperty("enable.auto.commit", "false") // 不让kafka...

随便推点

WPF DataGrid自定义样式模板 列表头分隔线 滚动条滑块大小设定 动态数据绑定和更新_datagridcolumnheaderspresenter_抹香茶的博客-程序员秘密

[ 效果图回去放,代码在后面 ][ 用到的一些定义如果没有附代码可以随便写个看下效果,因为直接从项目中copy出来的,难免漏掉点点... ]首先,有几点需要注意:1.表头样式 [ DataGridColumnHeader ]  默认带分割线,但每列表头左右分割线都占1px,也就是说假如有三列:a.  表格最左、右边应该不需要分割线,但默认的有1pxb.  中间需要1px分割线,但默认有2px(相邻...

java的数列极差_数列极差问题(the problem of sequence biggest difference)_史高拔的博客-程序员秘密

#include #include #include //we use the list container , because it is easy to sort and get the biggest number and smallest numberusing namespace std;void sequenceBiggestLess(list a, list b){a.sort...

螺旋矩阵(回型矩阵)_平头哥阿威的博客-程序员秘密

螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,...

sd卡无法启动及zc706更改主频后可以进入uboot无法启动kernel的坑_weixin_30776545的博客-程序员秘密

好长的标题 +_+1.sd卡无法启动起因:kernel底下通过dd测试速度,擦写了sd卡,再启动时发现无法启动于是重新格式化,再将BOOT.bin 相关dtb u-rootfs zImage和ubuntu-20190610.tar.bz2拷贝入第一分区,发现依旧无法启动格式化一开始在windows底下做,之后在ubuntu下fdisk都不行。另一张sd卡完全一样(wind...

python中使用xlrd、xlwt库以及openpyxl库读写excel(很不错)_outws.cell_卓玛cug的博客-程序员秘密

http://blog.csdn.net/u013816144/article/details/53317577本文内容主要是:1、python中使用xlrd、xlwt库读写excel(xls)浅析2、python中使用openpyxl库读写excel(xlsx)浅析(亲测推荐使用openpyxl库,解决了问题:ValueError: row index was 65536, n...

ArchLinux安装(BIOS)_weixin_30344995的博客-程序员秘密

ArchLinux安装(BIOS)说在前头:在经历过无数次的失败尝试过后总结出的可用的安装过程(比官方的简单一点)官方安装指导一.连接网络1.连接# wifi-menu2.检查是否联通(ctrl+c停止)# ping www.baidu.com3.远程安装注:连接上网络之后可以通过远程链接(同一个网络下)在另一台电脑上进行安装操作(可方便复制代码),如不想这么做请忽略这一步骤...

推荐文章

热门文章

相关标签