Java Base64转换,Java Base64工具类

阅读更多

Java Base64转换, Java Base64工具类, Base64使用,base64详解

 

================================

©Copyright 蕃薯耀 2019年6月20日

http://fanshuyao.iteye.com/

 

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

 

一、Base64优、缺点

优点:

1、减少了http请求;

2、数据就是图片;

3、简单的加密(一般人看不懂)

缺点:

1、图片转换成Base64字符串,字符串会很长

2、影响到数据库性能

 

二、Base64显示方式:

data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/JavaScript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据

 

Html标签使用

Jpeg图片

 

CSS中使用:

background-image: url("data:image/png;base64,iVBORw0KGgo=...");

 

 三、Base64转换工具类:

1、使用JDK6自带的(不建议使用)

import sun.misc.BASE64Encoder; 
import sun.misc.BASE64Decoder;
//编码
BASE64Encoder encoder = new BASE64Encoder();  
String imageString = encoder.encode(byteArray);//转换成Base64形式

//解码
BASE64Decoder decoder = new BASE64Decoder();  
byte[] imageByteArray = decoder.decodeBuffer(imageString);  

 

但这个性能一般,而且转换出来的base64字符串会有换行符,可能还需要替换换行符,避免在某些场景因为分行导致出错。

 

2、使用Jdk8的Base64工具类(优先考虑使用)

java.util.Base64

//编码
Base64.getEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));

//解码
Base64.getDecoder().decode("c29tZSBzdHJpbmc=");

//URL编码
//URL对反斜线“/”有特殊的意义,因此URL编码需要替换掉它,使用下划线替换
Base64.getUrlEncoder().encodeToString("test.do?abcd".getBytes("utf-8"));

//MIME编码
//每一行输出不超过76个字符,而且每行以“\r\n”符结束
Base64.getMimeEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));

//流文件编码、解码
Base64.getEncoder().wrap(outputStream); 
Base64.getDecoder().wrap(inputStream);

 性能超好,如果已经使用JDK8,直接使用这个。

 

基本例子:

String base64String  = Base64.getEncoder().encodeToString("我是谁呢?".getBytes("UTF-8"));
System.out.println("base64String=" +base64String);
		
byte[] stringByte  = Base64.getDecoder().decode(base64String);
System.out.println("stringByte=" + new String(stringByte));

 结果:

base64String=5oiR5piv6LCB5ZGi77yf
stringByte=我是谁呢?

 

 

3、使用Spring提供的Base64Utils类

org.springframework.util.Base64Utils;

 

4、使用apache中的Base64

org.apache.commons.codec.binary.Base64

 

 5、使用第三方工具类(附件有相应的jar包)

net.iharder.Base64;

Base64.encodeBytes(bytes);

//直接从文件路径获取base64编码
Base64.encodeFromFile("c:/938dcfd836be4e15a225110dc77769d0.jpg");

  性能非常好。

 

四、文件转成字节

File file = new File("c:/5110dc77769d0.jpg");
InputStream inputStream = new FileInputStream(file);
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
inputStream.close();

 

五、base64编码后的格式

jpg图片的base64一般以/9j/开头

/9j/4AAQSkZJRgABAQEAwADAAAD/2wBDA

 

png格式图片base64一般以iVBO开头

iVBORw0KGgoAAAANSUhEUg

 

txt文本(UTF-8编码)Base64一般以77u/开头

77u/5Z2Q5qCH6K+05piOOnjlkox55LmL6Ze055So6Iux5paH6YCX5Y+36Z

 

 

 

Java 使用Base64将图片保存到数据库和显示图片:

https://fanshuyao.iteye.com/blog/2441370

 

================================

©Copyright 蕃薯耀 2019年6月20日

http://fanshuyao.iteye.com/

 

 

 

  • net_iharder_Base64.zip (32.8 KB)
  • 下载次数: 4

你可能感兴趣的:(Java,Base64转换,Java,Base64工具类,Base64使用,base64详解,蕃薯耀)