工作中用到了需要获取网络二维码图片,可是网上给的方法获取后发现有时出现图片显示不全的情况,估计是因为输入流没有读完就生成了图片。
还是老老实实的获取图片的byte数组才能获取完整的图片。
代码如下:
/**
* 获取指定路径,的数据。
*
* **/
public static byte[] getImage2(String urlpath) {
URL url;
HttpURLConnection conn = null;
InputStream inputStream = null ;
try {
url = new URL(urlpath);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(6 * 1000);
// 别超过10秒。
if (conn.getResponseCode() == 200) {
inputStream = conn.getInputStream();
return readStream(inputStream);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
conn.disconnect();
}
return null;
}
/**
* 读取数据 输入流
*
* */
private static byte[] readStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = inStream.read(buffer)) != -1) {
outstream.write(buffer, 0, len);
}
outstream.close();
inStream.close();
return outstream.toByteArray();
}
本文介绍了一种确保从网络上完整下载二维码图片的方法,通过直接读取图片的字节流来避免图片显示不全的问题,并提供了具体的Java实现代码。
1863

被折叠的 条评论
为什么被折叠?



