有时我们有这种需求,就是将网络的图片(只有图片的url)下载到本地然后转化为base64字符串,其实就是对流的操作(我这里还要好好学习数据流的基础,很是欠缺啊)
public static String covToBase64(String imgURL) throws ServerException{
if(StringUtil.isNullOrEmpty(imgURL)){
throw new ServerException("图片地址错误,请联系管理员");
}
//将图片转化为base64位
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
byte[] data = new byte[1024];
try {
// 创建URL
URL url = new URL(imgURL);
// 创建链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10 * 1000);
if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new ServerException("连接失败/链接失效/图片不存在,请联系管理员");
}
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编码
BASE64Encoder encoder = new BASE64Encoder();
return "data:image/png;base64,"+encoder.encode(outPut.toByteArray());
}
看着很简单吧,其实就是在后台模拟前台的请求,拿到数据流做处理。。。