是否可以使用Connection.getInputStream从网站获取图像?我有一个网站(http://xxxxx.php),上面有我想用Connection.getInputStream接收的图片。有没有办法实现这个目标?
我有以下代码:
URL url= new URL("http://xxxxx.php");
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
我需要
答案 0 :(得分:0)
假设您的PHP脚本实际上正在返回一个图像,那么您所做的事情(至少对于一个合理大小的图像)是用javax.imageio.ImageIO
打开的,这是一个包含用于读取图像的实用程序方法的类 - 来自来自流等的文件
try {
URL url = new URL("http://xxxxx.php/");
URLConnection connection = url.openConnection();
// Pass the input stream thorough a BufferedInputStream for better
// efficiency
InputStream is = new BufferedInputStream(connection.getInputStream());
// Read the image and close the stream
Image image = ImageIO.read(is);
is.close();
if (image == null) {
System.err.println("ImageIO could not find a reader for this image");
} else {
// Display GUI
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel(new ImageIcon(image));
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
} catch (IOException e) {
e.printStackTrace();
}
为避免出现问题,请确保PHP脚本正在发送相应的MIME类型(image/jpeg
,image/gif
,image/png
等。)
如果您的PHP脚本正在返回其上有IMG
标记的HTML,那么您需要使用例如jsoup来解析它。< / p>
根据您对HTML结构的了解,您可以
IMG
代码SRC
属性中提取网址。http://
,https://
等开头),则您需要将其附加到PHP脚本的基本网址。请注意,如果该网站的创建者决定更改其设计,您的程序将停止工作。如果您有更好的方法来查找所需的图像而无需阅读HTML(例如,使用API或Web服务),那就更好了。