Base64工具类
package com.juzilicai.framework.common.util;
import java.io.UnsupportedEncodingException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* base64 编码 〈一句话功能简述〉 〈功能详细描述〉
*
* @version 2017年7月25日
* @see Base64
* @since
*/
public class Base64 {
/**
* 加密
*
* @param str
* @return
*/
public static String encode(byte[] b) {
String s = null;
if (b != null) {
s = new BASE64Encoder().encode(b);
}
return s;
}
/**
* 加密
*
* @param str
* @return
*/
public static String encode(String src) {
return encode(src.getBytes());
}
/**
* 解密
*
* @param s
* @return
*/
public static byte[] decode(String s) {
byte[] b = null;
if (s != null) {
BASE64Decoder decoder = new BASE64Decoder();
try {
b = decoder.decodeBuffer(s);
} catch (Exception e) {
e.printStackTrace();
}
}
return b;
}
/**
* 解密
*
* @param s
* @return
*/
public static String decodeStr(String s) {
byte[] b = decode(s);
try {
return b != null ? (new String(b, "UTF-8")) : null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
}
互相转换的实现:
package com.juzilicai.encrypt.impl;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.FileUtils;
import com.juzilicai.framework.common.util.Base64;
import net.coobird.thumbnailator.Thumbnails;
/**
* 功能描述:
*
* @author deekeydai 2018年5月30日
*/
public class MainTest {
/**
* @param args
*/
public static void main(String[] args) {
File imgFile = new File("d://xxxxx.png");
Base64 base64 = new Base64();
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
// 对字节数组Base64编码
System.err.println(data);
System.out.println(base64.encode(data));
String imgStr = base64.encode(data);
System.err.println(imgStr.length());
try {
byte[] b = base64.decode(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
String imgFilePath = "d://yyyyy.png";
FileUtils.writeByteArrayToFile(new File(imgFilePath), b);
/**
* 生成缩略图
* 若图片横比200小,高比300小,不变
* 若图片横比200小,高比300大,高缩小到300,图片比例不变
* 若图片横比200大,高比300小,横缩小到200,图片比例不变
* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
*/
Thumbnails.of(new File(imgFilePath)).size(200, 300).toFile("d://yyyyy-slt.png");
// OutputStream out = new FileOutputStream(imgFilePath);
// out.write(b);
// out.flush();
// out.close();
System.err.println("OK");
} catch (Exception e) {
System.out.println("error");
}
}
}
注意:
生成缩率图的Thumbnails需引入以下jar包
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>