根据图片url转base64
网上查找的转换方法用的包是sun.misc.BASE64Encoder,需要导jar包,这里换成了java.util.Base64,可以直接使用,话不多说,代码如下:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
public class imageToBase64Demo {
/**
* 将网络地址对应的图片转换为base64
* @param imagePath 网络图片路径
* @return res 图片对应的Base64编码
*/
public static String imageChangeBase64(String imagePath){
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
byte[] data = new byte[1024];
try {
// 创建URL
URL url = new URL(imagePath);
// 创建链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10 * 1000);
if(conn.getResponseCode() != 200) {
return "fail";//连接失败/链接失效/图片不存在
}
InputStream inStream = conn.getInputStream();
int len = -1;
while ((len = inStream.read(data)) != -1) {
outPut.write(data, 0, len);
}
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
byte[] encode = Base64.getEncoder().encode(outPut.toByteArray());
String res = new String(encode);
return res;
}
public static void main(String[] args) throws Exception {
// 设置网络图片的url路径
String imgFilePath = "http://pic.sc.chinaz.com/files/pic/pic9/202006/apic26069.jpg";
String base64_str = imageChangeBase64(imgFilePath);
System.out.println(base64_str);
}
}