图片转base/base转图片在线版
http://tool.chinaz.com/tools/imgtobase/
工具类
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import java.io.*;
/**
* @author zhaotao
* @version V1.0
* @description
*/
public class BASE64DecodedMultipartFile implements MultipartFile {
private final byte[] imgContent;
private final String header;
public BASE64DecodedMultipartFile(byte[] imgContent, String header) {
this.imgContent = imgContent;
this.header = header.split(";")[0];
}
@Override
public String getName() {
return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1];
}
@Override
public String getOriginalFilename() {
return System.currentTimeMillis() + (int) Math.random() * 10000 + "." + header.split("/")[1];
}
@Override
public String getContentType() {
return header.split(":")[1];
}
@Override
public boolean isEmpty() {
return imgContent == null || imgContent.length == 0;
}
@Override
public long getSize() {
return imgContent.length;
}
@Override
public byte[] getBytes() throws IOException {
return imgContent;
}
@Override
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(imgContent);
}
@Override
public void transferTo(File dest) throws IOException, IllegalStateException {
new FileOutputStream(dest).write(imgContent);
}
public static MultipartFile base64ToMultipart(String base64) {
try {
String baseStrs[] = base64.split(",");
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = new byte[0];
b = decoder.decodeBuffer(baseStrs[1]);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
return new BASE64DecodedMultipartFile(b, baseStrs[0]);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
base64转图片
public static void main(String[] args) {
String str="data:image/png;base64,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";
MultipartFile multipartFile=BASE64DecodedMultipartFile.base64ToMultipart(str);
int n;
File f = null;
// 输出文件的新name 就是指上传后的文件名称
System.out.println("getName:"+multipartFile.getName());
// 输出源文件名称 就是指上传前的文件名称
System.out.println("Oriname:"+multipartFile.getOriginalFilename());
// 创建文件
f = new File(multipartFile.getOriginalFilename());
try (InputStream in = multipartFile.getInputStream();
OutputStream os = new FileOutputStream(f)){
// 得到文件流。以文件流的方式输出到新文件
// 可以使用byte[] ss = multipartFile.getBytes();代替while
byte[] buffer = new byte[4096];
while ((n = in.read(buffer,0,4096)) != -1){
os.write(buffer,0,n);
}
// 读取文件第一行
BufferedReader bufferedReader = new BufferedReader(new FileReader(f));
System.out.println(bufferedReader.readLine());
// 输出路径
bufferedReader.close();
}catch (IOException e){
e.printStackTrace();
}
// 输出file的URL
try {
System.out.println(f.toURI().toURL().toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
// 输出文件的绝对路径
System.out.println(f.getAbsolutePath());
// 操作完上的文件 需要删除在根目录下生成的文件
File file = new File(f.toURI());
if (file.delete()){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
图片转base64
public static String convertFileToBase64(String imgPath) {
byte[] data = null;
// 读取图片字节数组
try {
InputStream in = new FileInputStream(imgPath);
System.out.println("文件大小(字节)="+in.available());
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组进行Base64编码,得到Base64编码的字符串
BASE64Encoder encoder = new BASE64Encoder();
String base64Str = encoder.encode(data);
return base64Str;
}
public static void main(String[] args) {
System.out.println( convertFileToBase64("C:\\Users\\23704\\Desktop\\1.jpg"));
}