我從Twitter中提取圖像。這些圖像可達來自網址形式:檢查HTTP請求中的圖像有效性
https://pbs.twimg.com/media/BzQXyBJIAAIU6D0.jpg
爲了獲取圖像,我採用下面的代碼:
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestMethod ("GET");
httpConnection.connect();
int code = httpConnection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK){
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
httpConnection.disconnect();
}
然而,有時會發生圖像像這樣:
https://pbs.twimg.com/media/By_ui7QIgAE021Z.jpg
在某種程度上是畸形的,雖然code=200
,我在這裏發佈的代碼不起作用,錯誤:
Corrupt JPEG data: premature end of data segment
java.io.FileNotFoundException: https://pbs.twimg.com/media/By_ui7QIgAE021Z.jpg
例外情況由指令openStream()
生成。
如何防止這種情況發生?如何檢查圖像有效性?
您的代碼與輸出不匹配。您的代碼示例中沒有任何內容能夠輸出「損壞的JPEG數據:數據段過早結束」。 – jarnbjo 2014-10-06 14:39:31