标签:图片转换
花了一早上的时间总结了下图片的各种转换方式,在此分享下。
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.Base64;
import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.FileImageOutputStream;
public class ccc {
public static void main(String[] args) throws Exception{
File file=new File("D://2.png");
// File file2=new File("D://3.png");
byte data[]=imageTobyte(file);
// String str=byteTohex(data);
// byte data2[]=hexTobyte(str);
byteToimage(Base64StringTobyte(byteToBase64String(data)),"d://aaaa.png");
}
//图片转二进制
public static byte[] imageTobyte(File file)throws Exception{
FileImageInputStream input =new FileImageInputStream(file);
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] data = null;
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
return data;
}
//二进制转字符串
public static String byteTohex(byte[] b)throws Exception{
StringBuffer sb = new StringBuffer();
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1) {
sb.append("0" + stmp);
} else {
sb.append(stmp);
}
}
return sb.toString();
}
//字符串转二进制
public static byte[] hexTobyte(String str) {
if (str == null)
return null;
str = str.trim();
int len = str.length();
if (len == 0 || len % 2 == 1)
return null;
byte[] b = new byte[len / 2];
try {
for (int i = 0; i < str.length(); i += 2) {
b[i / 2] = (byte) Integer.decode("0X" + str.substring(i, i + 2)).intValue();
}
return b;
} catch (Exception e) {
return null;
}
}
//二进制转图片 path为图片地址
public static void byteToimage(byte[] data,String path){
if(data.length<3||path.equals("")) return;
try{
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));
imageOutput.write(data, 0, data.length);
imageOutput.close();
System.out.println("Make Picture success,Please find image in " + path);
} catch(Exception ex) {
System.out.println("Exception: " + ex);
ex.printStackTrace();
}
}
//二进制byte[] 转 base64字符串
public static String byteToBase64String(byte[] data){
String Base64String=Base64.getEncoder().encodeToString(data);
return Base64String;
}
//base64字符串 转 二进制byte[]
public static byte[] Base64StringTobyte(String Base64String) {
byte[] bytes = Base64.getDecoder().decode(Base64String);
return bytes;
} 图片转字符串建议使用base64的转换方式,base64字符串传到前台可以直接显示出来。
格式为<img src="data:image/jpg;base64,base64字符串"/>
注:此处的 util.base64包是jdk1.8才有的
标签:图片转换
原文地址:http://11745766.blog.51cto.com/11735766/1826621