Как получить изображение типа blob из MySQL в JTable, используя Java? - PullRequest
0 голосов
/ 29 августа 2018

Я создал простое приложение для отображения изображений из базы данных. У меня есть таблица в базе данных MySQL со столбцом типа BLOB.

Когда я получаю изображение из таблицы, оно просто содержит: "javax.swing.ImageIcon@2143ca6".

Мой код:

String[] columntabelNames = {"Images"};
DefaultTableModel modelas = new DefaultTableModel(columntabelNames, 0);

Statement stmt = null;
ResultSet rs;

try {
  Connection conn = getConnection();
  stmt = (Statement) conn.createStatement();

  ResultSet rs1;
  rs1 = stmt.executeQuery("SELECT IMAGES_IMAGE FROM dc_images");
  if (rs1.next()) {

    byte[] imgData = rs1.getBytes("IMAGES_IMAGE");
    ImageIcon imagIcon = new ImageIcon(imgData);
    Image im = imagIcon.getImage();
    Image myImage = im.getScaledInstance(50, 50, Image.SCALE_SMOOTH);
    ImageIcon newImageIcon = new ImageIcon(myImage);
    lblimage.setIcon(newImageIcon);

    Object data[] = {newImageIcon};
    modelas.addRow(data);
  }
  tabelImage.setModel(modelas);

} catch (Exception ex) {
  System.out.println(ex.getMessage());
}

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Когда я получаю изображение из таблицы, оно просто содержит: "javax.swing.ImageIcon@2143ca6".

Средство визуализации по умолчанию для JTable просто вызывает метод toString () для объекта, поэтому вы видите toString () для ImageIcon.

Вам необходимо переопределить метод getColumnClass(...) вашего TableModel (или JTable) для возврата Icon.class, тогда таблица будет использовать средство визуализации значков.

Прочитайте раздел из учебника по Swing на Использование Renderers / Editor для получения дополнительной информации.

0 голосов
/ 29 августа 2018

Попробуйте это

Image im = ImageIO.read((ImageInputStream) new DefaultStreamedContent(new ByteArrayInputStream(imgData)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...