package com.tianmushanlu.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 参考至博客 http://www.cnblogs.com/phinecos/archive/2008/09/23/1297292.html
*
*
*/
public class Base64Util {
/**
* 测试main方法
* @param args
*/
public static void main(String[] args) {
String imageStr = getImageStr("D:\\image.jpg");
System.out.println(imageStr);
generateImage(imageStr,"generateImage.jpg");
}
private static String LOCAL_FILE_PATH;
static {
LOCAL_FILE_PATH = System.getProperty("user.home");
// 如果不是以文件分隔符结尾,就补充文件分隔符
if (!LOCAL_FILE_PATH.endsWith(File.separator)) {
LOCAL_FILE_PATH += File.separator;
}
LOCAL_FILE_PATH += "conf" + File.separator + "image" + File.separator;
}
/**
* 生成字节数组字符串
*
* @param imgBase64Str
* 经过Base64编码过的字节数组字符串
* @return 字节数组字符串
*/
public static byte[] generateByte(String imgBase64Str) {
byte[] b = new byte[3072];
if (imgBase64Str == null) {
return b;
}
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
b = decoder.decodeBuffer(imgBase64Str);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
return b;
} catch (Exception e) {
return b;
}
}
/**
* 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
*
* @param imgContent
* 待处理的图片
* @return 返回Base64编码过的字节数组字符串
*/
public static String getImageStr(String imgContent) {
String imgBase64Str = null;
InputStream in = null;
byte[] data = null;
if( imgContent == null || ("").equals(imgContent) ) {
return imgBase64Str;
}
// 读取图片字节数组
try {
in = new FileInputStream(imgContent);
data = new byte[in.available()];
in.read(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
imgBase64Str = encoder.encode(data);
return imgBase64Str;
}
/**
* 对字节数组字符串进行Base64解码并生成图片
*
* @param imgBase64Str
* 经过Base64编码过的字节数组字符串
* @param imgName
* 图片名
* @return 是否生成图片
*/
public static boolean generateImage(String imgBase64Str, String imgName) {
OutputStream out = null;
if (imgName == null || ("").equals(imgName)) {
return false;
}
if (imgBase64Str == null || ("").equals(imgBase64Str)) {
return false;
}
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgBase64Str);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
/**
* 生成图片文件,存储路径为C:\Users\xxx(你的主机名)\conf\temp
*
*/
//如果目录不存在,创建目录
File localImageFolder = new File(LOCAL_FILE_PATH);
if(!localImageFolder.exists()) {
localImageFolder.mkdirs();
}
//如果目录不为空清空目录,因为都是单线程操作,这里清除不会相互影响
File[] subFiles = localImageFolder.listFiles();
if(null != subFiles) {
for(File subFile : subFiles) {
subFile.delete();
}
}
out = new FileOutputStream(LOCAL_FILE_PATH + imgName);
out.write(b);
out.flush();
return true;
} catch (Exception e) {
return false;
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
总之,Java和JavaScript中Base64编码和解码的实现原理相似,都是将二进制数据转换为可打印的ASCII字符。Java自Java 8开始内置了Base64支持,而JavaScript则依赖于`btoa()`和`atob()`函数,或者使用第三方库。在实际...
* 使用编程语言(如C++、Java、Python等)实现Base64编解码算法 * 使用Base64编解码库(如 OpenSSL 等) * 使用在线工具实现Base64编解码 6.实验步骤和调试过程 实验步骤和调试过程包括: * 编写Base64编解码程序...
Base64编解码程序 可以把文件编码为bmp图片 当然编码出来的图片当然是很不美观的~~~ 注意:不要编码或解码过大的文件~~ 因为该程序的所有操作都是在内存中进行的~~ 且是单线程的~~ 编码出来的位图是BITMAPCOREHEADER...
在实践中,你可以使用各种编程语言实现Base64的编解码,例如Python的`base64`库,Java的`java.util.Base64`类,或者JavaScript的`btoa`和`atob`函数。 总结来说,这个"Base64编解码Demo"涉及到将MAC地址和IP地址...
在Java编程中,将图片与Base64编码进行相互转换是一项常见的任务,特别是在网络传输、存储和显示图像数据时。Base64是一种用于将任意二进制数据转换为可打印ASCII字符的编码方式,这对于在HTTP协议下传输二进制数据...
二维码生成和图片Base64编码解码是两个在IT领域中常见的操作,广泛应用于数据传输、网页设计和移动应用等领域。下面将详细讲解这两个主题。 首先,二维码(Quick Response Code)是一种二维条形码,可以存储更多的...
### 解码Base64图片的特殊情况 在某些场景下,Base64编码的图片字符串会包含额外的信息,例如"data:image/*;base64,",这通常出现在HTML的`<img>`标签中。在解码这种形式的字符串时,需要先去除前缀,只保留Base64...
在Java中,处理Base64编码和解码的操作通常涉及到网络通信、数据序列化以及安全加密等方面。下面我们将详细探讨Java中的Base64编码和解码原理及其实现方式。 Base64编码的基本思想是将每3个字节(24位)的数据转换...
"Java基于Base64实现编码解码图片文件" Java基于Base64实现编码解码图片文件是Java语言...Java基于Base64实现编码解码图片文件是一种常见的编码解码实现方式,广泛应用于数据传输和存储,但需要注意其安全性和可靠性。
在Java中,Base64编码和解码的功能主要通过`java.util.Base64`这个类来实现,该类在Java 8及以上版本中引入。下面将详细介绍如何使用这个类进行Base64的编码和解码操作。 首先,我们来看Base64编码的过程。编码的...
`sun.misc.BASE64Encoder`和`sun.misc.BASE64Decoder`是Java早期提供的用于Base64编码和解码的类,但请注意,这些类不在标准Java API中,而是属于Sun Microsystems的内部实现,不推荐在新的项目中使用,因为它们可能...
总结来说,Base64编解码是将二进制数据转换为ASCII字符串的技术,方便在网络传输中使用。了解其原理和应用可以帮助我们在开发过程中更好地处理二进制数据的编码和解码需求。在实际项目中,根据具体场景选择合适的...
在Java中,Base64编解码操作主要通过`java.util.Base64`类来实现。这个类提供了多个静态方法用于编码和解码。例如,`getEncoder()`方法返回一个Base64编码器实例,`encodeToString(byte[])`方法则可以将字节数组编码...
java端:返回类型非字符接口调用StringUtils#base64AndCompressJson进行编码压缩 ,返回类型为字符接口调用StringUtils#base64Andcompress js 端:引入压缩包中的js文件 ,调用deBase64AndUncompress进行解压解码
在本文中,我们介绍了如何使用Java将图片转换为Base64编码,并将Base64编码字符串解码成图片。使用Base64编码可以将图片数据转换为文本数据,使得数据传输和存储更加安全和可靠。同时,我们也学习了如何使用Apache ...
标题中的“sun base64解码实现”是指在Java编程语言中使用内置的Sun JDK提供的Base64解码功能。Base64是一种用于将任意二进制数据编码为ASCII字符的编码方式,常用于在网络上传输包含二进制的数据,如图片、证书等。...
总结来说,通过Base64编码和JSON对象,我们可以将图片数据转换为文本格式在网络上传输,并在客户端进行解码和保存,实现图片从服务器下载到本地的功能。这种方法在一些轻量级的应用场景中非常实用,但需要注意数据量...
在实际开发中,大多数编程语言都有内置的库函数或模块来处理Base64编码和解码,比如Python的`base64`模块,Java的`java.util.Base64`类,JavaScript的`atob()`和`btoa()`方法等。这些内置函数通常比自定义实现更高效...
在编程语言中,如Python、Java、JavaScript等,都有内置的Base64编码和解码函数,方便开发者使用。例如,Python中的`base64`模块提供了`b64encode()`和`b64decode()`方法,可以轻松实现Base64的转换。 总的来说,...