JAVA 将图片转换为Base64编码

https://www.cnblogs.com/ywlx/p/4544179.html

这里使用的jar包是commons-codec-1.10.jar;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import org.apache.commons.codec.binary.Base64;

/**

* 将图片转换为Base64<br>

* 将base64编码字符串解码成img图片

* @创建时间 2015-06-01 15:50

*

*/

public class Img2Base64Util {

public static void main(String[] args) {

String imgFile = "d:\\3.jpg";//待处理的图片

String imgbese=getImgStr(imgFile);

System.out.println(imgbese.length());

System.out.println(imgbese);

String imgFilePath = "d:\\332.jpg";//新生成的图片

generateImage(imgbese,imgFilePath);

}

/**

* 将图片转换成Base64编码

* @param imgFile 待处理图片

* @return

*/

public static String getImgStr(String imgFile){

//将图片文件转化为字节数组字符串,并对其进行Base64编码处理

InputStream in = null;

byte[] data = null;

//读取图片字节数组

try

{

in = new FileInputStream(imgFile);

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

in.read(data);

in.close();

}

catch (IOException e)

{

e.printStackTrace();

}

return new String(Base64.encodeBase64(data));

}

/**

* 对字节数组字符串进行Base64解码并生成图片

* @param imgStr 图片数据

* @param imgFilePath 保存图片全路径地址

* @return

*/

public static boolean generateImage(String imgStr,String imgFilePath){

//

if (imgStr == null) //图像数据为空

return false;

try

{

//Base64解码

byte[] b = Base64.decodeBase64(imgStr);

for(int i=0;i<b.length;++i)

{

if(b[i]<0)

{//调整异常数据

b[i]+=256;

}

}

//生成jpeg图片

OutputStream out = new FileOutputStream(imgFilePath);

out.write(b);

out.flush();

out.close();

return true;

}

catch (Exception e)

{

return false;

}

}

}


public static void main(String[] args){

try {

base64UpLoad("data:image/jpeg;base64,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");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//将前端所有的data:image/jpeg;base64,/9jxxxxxxxx解析

public static void base64UpLoad(String base64Data) throws Exception{

String dataPrix = "";

String data = "";

if(base64Data == null || "".equals(base64Data)){

throw new Exception("上传失败,上传图片数据为空");

}else{

String [] d = base64Data.split("base64,");

if(d != null && d.length == 2){

dataPrix = d[0];

data = d[1];

}else{

throw new Exception("上传失败,数据不合法");

}

}

// FileDtl fileDtl= new FileDtl();

String suffix = "";

if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64编码的jpeg图片数据

suffix = ".jpg";

} else if("data:image/x-icon;".equalsIgnoreCase(dataPrix)){//data:image/x-icon;base64,base64编码的icon图片数据

suffix = ".ico";

} else if("data:image/gif;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64编码的gif图片数据

suffix = ".gif";

} else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64编码的png图片数据

suffix = ".png";

}else{

throw new Exception("上传图片格式不合法");

}

String tempFileName = DateUtil.timeStampMS() + suffix;

try {

byte[] bs = Base64.decodeBase64(data);

//处理数据

for (int i = 0; i < bs.length; ++i) {

if (bs[i] < 0) {

bs[i] += 256;

}

}

OutputStream out = new FileOutputStream("d:\\"+tempFileName);

out.write(bs);

out.flush();

out.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// fileDtl.setFileName(tempFileName);

// // byte[] bs = Base64Utils.decodeFromString(data);

// BASE64Decoder decoder = new BASE64Decoder();

// byte[] bs = decoder.decodeBuffer(data);

// //处理数据

// for (int i = 0; i < bs.length; ++i) {

// if (bs[i] < 0) {

// bs[i] += 256;

// }

// }

// int size=bs.length;

// fileDtl.setFileSize((long)size) ;

// InputStream is = new ByteArrayInputStream(bs);

// fileDtl.setIs(is);

// return fileDtl;

}