Я работаю на IM-клиенте, в настоящее время я пытаюсь настроить потоковую передачу веб-камеры по протоколу http.
Сервер возвращает веб-страницу, содержащую двоичные данные в кодировке base64 из источника.
Я пробовал всевозможные эксперименты с установкой статуса значка метки с помощью изображения в кодировке base64, предоставляемого сервером
package net.undergroundim.client.gui;
import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.util.Base64;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class tmp {
private JFrame frame;
private static JLabel lblNewLabel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
tmp window = new tmp();
window.frame.setVisible(true);
while (true) {
Thread.sleep(5);
String src = "";
src = URLSrc.getURLSource("http://127.0.0.1:9991/video");
byte[] decodedString = Base64.getDecoder().decode(src);
if(decodedString.length > 25) {
InputStream in = new ByteArrayInputStream(decodedString);
BufferedImage bImageFromConvert = ImageIO.read(in);
getLblNewLabel().setIcon(new ImageIcon(bImageFromConvert));
getLblNewLabel().revalidate();
getLblNewLabel().repaint();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public tmp() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
lblNewLabel = new JLabel();
lblNewLabel.setIcon(new ImageIcon(tmp.class.getResource("/icons/earth-icon.png")));
lblNewLabel.setBounds(0, 0, 428, 244);
frame.getContentPane().add(lblNewLabel);
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
}
public static JLabel getLblNewLabel() {
return lblNewLabel;
}
}
Данные base64, возвращаемые через http, должны быть декодированы в изображение, отображаемое наэлемент управления меткой, использующий setIcon (), однако, когда я пытаюсь добавить в декодированные байты метку, она просто отображается как пустая