2015-02-16 3 views
-2

Можно ли получить изображение с веб-сайта с помощью Connection.getInputStream? У меня есть сайт (http://xxxxx.php) с изображением на нем, которое я хочу получить, используя Connection.getInputStream. Есть ли способ достичь этого?java get image using connection.getInputStream

У меня есть следующий код:

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

Мне нужно получить

+0

Что вы хотите сделать? – RealSkeptic

+0

Я хочу добавить его в мое приложение – user2939293

+0

Что вы хотите сделать с ним в своем приложении? Какой объект вы собираетесь использовать? Что он собирается делать? Бинарные данные есть, но вопрос в том, что вы намерены делать с ним? – RealSkeptic

ответ

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 скрипт возвращающий HTML, который имеет IMG тег где-то на него, то вам нужно разобрать его, используя, например, jsoup.

Основываясь на вашем знании структуры HTML, вы

  • Найти подходящий IMG тег
  • Извлечение URL из атрибута SRC.
  • Если URL-адрес относительный (не начинается с http://, https:// и т. Д.), Вам необходимо добавить его к базовому URL-адресу скрипта PHP.
  • Затем используйте приведенный выше код, чтобы отобразить изображение из результирующего URL.

Обратите внимание, что если создатель этого сайта решит изменить свой дизайн, ваша программа перестанет работать. Если у вас есть лучший способ найти нужное изображение без чтения HTML (например, с помощью API или веб-сервиса), это будет намного лучше.

+0

Предполагается, что xxx.php возвращает данные изображения, если это не так, то это не сработает – MadProgrammer

+0

@MadProgrammer Вот почему существует 'if (image == null)' там. Если поток не является потоком изображения, 'ImageIO.read()' возвращает 'null'. – RealSkeptic

+0

@MadProgrammer А, я понимаю, что вы имеете в виду. Вы думаете, что OP спрашивает об изображении, встроенном в HTML-страницу. Я отвечу на этот вопрос. – RealSkeptic