【发布时间】:2017-01-31 04:15:04
【问题描述】:
我一直在尝试通过 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);
我真的需要你的帮助!!!很久以前我一直在尝试解决它,但没有成功。
提前致谢!!!
【问题讨论】:
-
在这里查看this。这将帮助你
-
第一种方法适合我
-
请在此处附上您从第一个案例下载的文件,以便我们验证它是否真的损坏了。另外,我会尝试通过其他方式下载它并对其进行比较,然后通过 java 下载一个以查看差异是什么
-
图像只是二进制内容而已。知道第一个适用于任何类型的内容(二进制或非二进制),它也适用于图像
-
我唯一能做的就是使用 try-with-resources 语句来关闭你的流,无论发生什么,就像这个答案stackoverflow.com/a/32472138/1997376