java使用connection.getInputStream获取图像

时间:2015-02-16 18:54:57

标签: java

是否可以使用Connection.getInputStream从网站获取图像?我有一个网站(http://xxxxx.php),上面有我想用Connection.getInputStream接收的图片。有没有办法实现这个目标?

我有以下代码:

URL url= new URL("http://xxxxx.php");
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();

我需要

1 个答案:

答案 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/jpegimage/gifimage/png等。)


如果您的PHP脚本正在返回其上有IMG标记的HTML,那么您需要使用例如jsoup来解析它。< / p>

根据您对HTML结构的了解,您可以

  • 找到合适的IMG代码
  • 从其SRC属性中提取网址。
  • 如果网址是相对的(不是以http://https://等开头),则您需要将其附加到PHP脚本的基本网址。
  • 然后使用上面的代码显示生成的网址中的图片。

请注意,如果该网站的创建者决定更改其设计,您的程序将停止工作。如果您有更好的方法来查找所需的图像而无需阅读HTML(例如,使用API​​或Web服务),那就更好了。