将JLabel图标转换为Java中的字节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将JLabel图标转换为Java中的字节相关的知识,希望对你有一定的参考价值。

我一直在尝试从JLabel图标中获取图像,然后在将图像插入数据库之前将其转换为字节。我做过类似的事情,但是当我从数据库中获取字节并将其设置为JLabel作为Icon时,它只是黑色。有帮助吗?这是我的代码。

try {
      Icon icons = passpo.getIcon();
      BufferedImage image = new BufferedImage(icons.getIconWidth(),
        icons.getIconHeight(),BufferedImage.TYPE_INT_RGB);
     ByteArrayOutputStream b =new ByteArrayOutputStream();
     ImageIO.write(image, "jpg", b );
     byte[] imageInByte = b.toByteArray();
       byte[] photos  = imageInByte;
    } catch (IOException d) {
        JOptionPane.showMessageDialog(this, d);
    }
答案

感谢MadProgrammer,您的链接帮助了我。它现在正在工作。这是我的代码

try {
        Icon icons = passpo.getIcon();
        BufferedImage bi = new BufferedImage(icons.getIconWidth(), icons.getIconHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics g = bi.createGraphics();
        icons.paintIcon(null, g, 0, 0);
        g.setColor(Color.WHITE);
        g.drawString(passpo.getText(), 10, 20);
        g.dispose();

        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(bi, "jpg", os);
        InputStream fis = new ByteArrayInputStream(os.toByteArray());
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        for (int readNum; (readNum = fis.read(buf)) != -1;) {
            bos.write(buf, 0, readNum);
            System.out.println("read " + readNum + " bytes,");
            }
         byte[] bytes = bos.toByteArray();
        photo = bytes;
    } catch (IOException d) {
        JOptionPane.showMessageDialog(rootPane, d);
    }

以上是关于将JLabel图标转换为Java中的字节的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JLabel 中的图标(拖放)移动到另一个 JLabel 而不是复制它?

如何将字节数组转换为blob

将 int 转换为字节 - Java 和 Actionscript 中的不同结果

将字符串 XML 片段转换为 Java 中的文档节点

在几个JLabel中设置相同的gif作为图标

如何将从 C++ 发送的 cv::MAT 字节数组转换为 Java 中的位图?