从URL读写图像

时间:2011-09-06 13:29:14

标签: java javax.imageio

我正在尝试从网址下载image ...我的代码是:

String url = "http://mysite.com/image.xyz" 

其中xyz可以是jpg / png / jpeg ..

现在可以使用

从网址读取图片了
BufferedImage image = ImageIO.read(url);

现在我需要的是使用以下方法将图像写入文件:

ImageIO.write(image, "variable" , new File("C:\\out1.jpg"));

我需要将variable的值替换为xyz ...的值,其中xyz的值将是来自网址的extracted ....

那么如何实现这个........

2 个答案:

答案 0 :(得分:2)

使用java.net.URL类:

URL u = new URL(url);
String name = u.getFile();
String ext = name.substring(name.lastIndexOf(".") + 1);

在分机中你有扩展名。

[编辑]

关于其他答案的一些注释:

除非你碰巧有一个带有查询参数的网址(例如http://www.example.org/folder/file.png?size=big),否则它们都是很好的答案。

使用最后三个字符,它将返回“big”而不是png。

此外,如果图像是.jpeg,它将返回“peg”。

简单地在最后使用“。”在字符串中也是危险的,或多或少与查询参数的原因相同:它会返回“.png?size = big”。

java.net.URL将考虑所有这些情况,并仅返回文件名。对于那里,提取扩展仍然是“找到点”的问题,但至少在已经清理过的字符串上。

答案 1 :(得分:1)

为什么不在最后一个点之后取出子串呢?

或者使用Apache Commons FileIO的类FilenameUtils,它提供了一种从路径获取扩展的方法。

请注意,您可能还想将该扩展名添加到输出文件中,如果out.jpg实际上是PNG文件,则可能会感到困惑。