/** | |||
* 网络图片转base64 | |||
* @param src | |||
* @return | |||
* @throws Exception | |||
*/ | |||
public static String getImageBase(String src) throws Exception { | |||
String s = ""; | |||
//打开链接 | |||
HttpURLConnection conn = null; | |||
try { | |||
//new一个URL对象 | |||
URL url = new URL(src); | |||
conn = (HttpURLConnection) url.openConnection(); | |||
//设置请求方式为"GET" | |||
conn.setRequestMethod("GET"); | |||
//超时响应时间为5秒 | |||
conn.setConnectTimeout(5 * 1000); | |||
//通过输入流获取图片数据 | |||
InputStream inStream = conn.getInputStream(); | |||
//得到图片的二进制数据,以二进制封装得到数据,具有通用性 | |||
byte[] data = readInputStream(inStream); | |||
BASE64Encoder encode = new BASE64Encoder(); | |||
return encode.encode(data).replaceAll("\\n", ""); | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
} | |||
return s; | |||
} | |||
private static byte[] readInputStream(InputStream inStream) { | |||
try { | |||
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); | |||
//创建一个Buffer字符串, 这边buffer设置大一点就不会出现空的结尾现象 | |||
byte[] buffer = new byte[1024 * 1024]; | |||
//每次读取的字符串长度,如果为-1,代表全部读取完毕 | |||
int len = 0; | |||
//使用一个输入流从buffer里把数据读取出来 | |||
while ((len = inStream.read(buffer)) != -1) { | |||
//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 | |||
outStream.write(buffer, 0, len); | |||
} | |||
//关闭输入流 | |||
inStream.close(); | |||
//把outStream里的数据写入内存 | |||
return outStream.toByteArray(); | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
return null; | |||
} |