如何从java中的url下载图像?

时间:2016-09-22 14:14:38

标签: java url

我一直在尝试通过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!

中获得了异常

第三种方式:

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);

我真的需要你的帮助!很久以前我一直试图解决它而没有成功。

提前致谢!!!

2 个答案:

答案 0 :(得分:6)

您必须在方式3中为目标文件指定完整位置

size (w)

对我来说工作正常

答案 1 :(得分:0)

通常,您尝试下载的图像位于占位符内部。占位符用于在所有浏览器或任何有价值的方法中为图像提供漂亮的黑色背景。

尝试使用任何文本编辑器打开一个较小尺寸的下载图像。您可能会惊讶地看到假定图像中的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>

如果尝试使用图像编辑器打开此文件,它将引发错误(错误的标题,错误的格式等),并且图像将不会打开。不是您在问题中显示的图像的情况,而是实际尝试下载的图像的情况。

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