簡體   English   中英

如何從java中的url下載圖像?

[英]How to download image from from url in java?

我一直在嘗試通過java從url下載圖像。
我試圖用很多方法解決它,但我沒有成功。

我正在寫我的方式,希望有人能找到哪里出錯了:

使用第一種和第二種方式,當我嘗試打開圖像時出現以下錯誤:

... 文件似乎已損壞、損壞或太大

...它的大小比它應該的要小。

我想這與編碼有關。

第一種方式:

URL url = new URL("http://www.avajava.com/images/avajavalogo.jpg");
InputStream in = url.openStream();
Files.copy(in, Paths.get("someFile.jpg"), StandardCopyOption.REPLACE_EXISTING);
in.close();

第二種方式:

File f= new File("c:\\image.jpg");
URL myUrl = new URL("http://www.avajava.com/images/avajavalogo.jpg");
FileUtils.copyURLToFile(myUrl, f);

使用方式 3,我在thread "main" java.lang.IllegalArgumentException: image == null!得到異常thread "main" java.lang.IllegalArgumentException: image == null!

第三種方式:

URL url = new URL("http://www.avajava.com/images/avajavalogo.jpg");
BufferedImage img = ImageIO.read(url);
File file = new File("downloaded.jpg");
ImageIO.write(img, "jpg", file);

我真的需要你的幫助!!! 很久以前我一直試圖解決它,但沒有成功。

提前致謝!!!

您必須以方式 3 指定目標文件的完整位置:

URL url = new URL("http://www.avajava.com/images/avajavalogo.jpg");
BufferedImage img = ImageIO.read(url);
File file = new File("D:\\image\\downloaded.jpg");
ImageIO.write(img, "jpg", file);

發生這種情況時,您嘗試下載的圖像通常位於占位符內。 占位符用於在所有瀏覽器或任何類型的有價值的方法中為圖像提供一些漂亮的黑色背景。

嘗試使用任何文本編輯器打開您下載的小尺寸圖像之一。 您可能會驚訝地看到您假設的圖像中包含 HTML 代碼。 此 HTML 代碼將有幾行,通常是背景顏色標記和圖像真實 URL 這是您必須包含在代碼中才能下載完整圖像的 URL。

這可能是您實際下載的avajavalogo.jpg文件的示例:

<!DOCTYPE html>
<html>
<body style="background-color:#0e0e0e;">
<center><img src="http://www.myhostsiteisgreat.com/image_real_location_url/awesome_image.jpg" border="0" onclick="Javascript: window.close();" alt="Click on image to close it."></center>
</body>
</html>

如果您嘗試使用圖像編輯器打開此文件,它將引發錯誤(錯誤的標題、錯誤的格式等)並且圖像將無法打開。 您在問題中顯示的圖像並非如此,但您實際嘗試下載的圖像可能是這種情況。

除此之外,公開的方法都是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM