java自带BASE64工具进行图片和字符串转换
java自带BASE64工具进行图片和字符串转换
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream; import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; public class Base64Test {
public static void main(String[] args) throws Exception{
File inputFile = new File("src/test.jpg");// 放在src文件夹下 待处理的图片
String strImg = null;
if(inputFile.exists()){
strImg = getImageStr(inputFile);
System.out.println(inputFile.getPath()+"转换后的字符串:\n"+strImg);
} File outputFile = new File("src/testCopy.jpg");// 即将在src文件夹下 生成的图片
generateImage(outputFile,strImg);
} /**
* 图片转化成base64字符串
* @param inputFile 源图片文件路径
* @return
*/
public static String getImageStr(File inputFile) throws Exception{// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
in = new FileInputStream(inputFile);
data = new byte[in.available()];
in.read(data);
in.close();
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64编码过的字节数组字符串
} /**
* base64字符串转化成图片
* @param outputFile 输出目标图片
* @param imgStr BASE64字符串
* @return
*/
public static boolean generateImage( File outputFile ,String imgStr ) throws Exception{ // 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) // 图像数据为空
return false;
// imgStr = "";
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(outputFile);
out.write(b);
out.flush();
out.close();
System.out.println("通过BASE64字符串\n"+imgStr+"\n 生成"+outputFile.getPath());
return true;
} catch (Exception e) {
return false;
}
}
}
打印结果
src\test.jpg转换后的BASE64字符串:
iVBORw0KGgoAAAANSUhEUgAAAFoAAAAZAQMAAACLqquDAAAABlBMVEUAAAD///+l2Z/dAAAAY0lE
QVR4nGNgIAOwf0DisDHg5DxA1mPAwMDfAONJANEBJA5DAkwPiAOTYTawYWCG6WF8kAaUYYRZfRio
h1kCicMA46QDjWb+AeVYAy1lg8kwgyywgHKcQQI3oJw0ZHfbMJAIALYtEHx6n3m7AAAAAElFTkSu
QmCC
通过BASE64字符串
iVBORw0KGgoAAAANSUhEUgAAAFoAAAAZAQMAAACLqquDAAAABlBMVEUAAAD///+l2Z/dAAAAY0lE
QVR4nGNgIAOwf0DisDHg5DxA1mPAwMDfAONJANEBJA5DAkwPiAOTYTawYWCG6WF8kAaUYYRZfRio
h1kCicMA46QDjWb+AeVYAy1lg8kwgyywgHKcQQI3oJw0ZHfbMJAIALYtEHx6n3m7AAAAAElFTkSu
QmCC
生成src\testCopy.jpg
java自带BASE64工具进行图片和字符串转换的更多相关文章
- java自带BASE64工具进行图片和字符串转换【转】
java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...
- java使用google开源工具实现图片压缩【转】
jar包名 import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.geometry.Positio ...
- 问题:C#将base64转换成二进制图片;结果:c# Base64编码和图片的互相转换代码
c# Base64编码和图片的互相转换代码 Base64编码在Web方面有很多应用,譬如在URL.电子邮件方面.网上有很多相关的资源用于提供Base64编码和其他编码的转换,.Net Framewor ...
- java使用google开源工具实现图片压缩
前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高清图片,分辨率也是相当的高,当然占用的存储空 ...
- PHP base64数据与图片的互相转换
1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...
- java日期操作的工具类时间格式的转换
package cn.itcast.oa.util; import java.text.ParseException; import java.text.SimpleDateFormat;import ...
- java自带命令工具
jstat,这个工具很强大,可以监测Java虚拟机GC多方面的状态,具体参数含义参见此链接: ./jstat -gc 84012 1000 3 S0C S1C S0U S1U ...
- java 自带的工具
前辈说,java的基本功的好坏,一个方面要看是否能熟练使用jdk bin下的工具使用情况. 自己整理一下使用的工具. ■ javac 一个编译java的工具,进入java所在文件的路径后,javac ...
- 如何用java自带的工具生成证书
一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...
随机推荐
- jQuery radio change事件 checkbox选中事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Event List 2
The list of events can be found in src/switch_event.c in a char array called EVENT_NAMES and is summ ...
- 27个知名企业品牌VI视觉识别系统规范手册
Apple公司视觉设计规范 微软公司VI视觉系统 星巴克企业视觉规范手册 DELL品牌VI视觉手册 MTRADING品牌视觉规范 KFC视觉设计规范手册 麦当劳视觉规范 LEGO乐高玩具的品牌视觉规范 ...
- Spring JSR-250注解
Java EE5中引入了“Java平台的公共注解(Common Annotations for the Java Platform)”,而且该公共注解从Java SE 6一开始就被包含其中. 2006 ...
- linux网络环境下socket套接字编程(UDP文件传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- Kafka安装及部署
安装及部署 一.环境配置 操作系统:Cent OS 7 Kafka版本:0.9.0.0 Kafka官网下载:请点击 JDK版本:1.7.0_51 SSH Secure Shell版本:XShell 5 ...
- 使用新浪云(SAE)实现基于mySql和微信公众平台的关键字请求响应服务
本例是作者初次尝试微信公众平台开发之作,实现传统的关键字请求响应功能.即:用户发关键字,公众号通过关键字进行检索, 在mysql数据库中读取与关键字相关的信息,并返回给用户.本例在微信订阅号(开发者模 ...
- 关于@Html.Action()的异常“控制器或该控制器未实现 IController。”
解决之前: @Html.Action("BottomHelp", "Articles", new { num = 5}) 解决之后: @Html.Action( ...
- 利用Manacher算法寻找字符串中的最长回文序列(palindrome)
寻找字符串中的最长回文序列和所有回文序列(正向和反向一样的序列,如aba,abba等)算是挺早以前提出的算法问题了,最近再刷Leetcode算法题的时候遇到了一个(题目),所以就顺便写下. 如果用正反 ...
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
源网址: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这 ...