【问题标题】:Display an image from a blob field - Java显示来自 blob 字段的图像 - Java
【发布时间】:2014-07-05 04:52:03
【问题描述】:

我必须在 JLabel 或其他任何东西中显示存储在 mysql 数据库(在 blob 字段中)中的图片才能显示它。 写完这一行后,我该怎么办?

Blob b = rs.getBlob ("image"); 

请详细解释一下,我已经搜索了整个网站,但没有完成任何事情。提前感谢所有人。

PS:我请管理员不要立即推迟话题,否则我无法复制,谢谢:)。

堆栈跟踪:

java.lang.NullPointerException
Finger was removed from fingerprint reader
at javax.swing.ImageIcon.<init>(Unknown Source)
at AppMain.ExtractDB(AppMain.java:294)
at AppMain.initDB(AppMain.java:271)
at AppMain.initialize(AppMain.java:245)
at AppMain.<init>(AppMain.java:68)
at MainForm.identify(MainForm.java:356)
at MainForm.extract(MainForm.java:257)
at MainForm.onImageAcquired(MainForm.java:213)
at com.griaule.grfingerjava.GrFingerJavaNative.callbackImage(GrFingerJavaNative.java:157)

【问题讨论】:

    标签: java mysql database image blob


    【解决方案1】:

    您需要读取 BLOB 的输入流并将其转换为 byte[],如下所示:

    InputStream byte_stream = b.getBinaryStream();
    byte [] byte_array = new byte [byte_stream.available()];
    int bytes_read = byte_stream.read(byte_array);
    

    然后使用这个 byte_array 来创建 ImageIcon 并像这样设置到 JLabel 中:

    使用 ImageIO 的另一种方式

    InputStream in = b.getBinaryStream();
    JLabel label = new JLabel(new ImageIcon(ImageIO.read(in)));
    

    希望这将为您提供解决问题的正确方向

    【讨论】:

    • 你好,首先感谢您的快速响应,然后我想说它返回了一个错误。简而言之,程序用红色强调了我这一行:new ImageIcon (bytes_read)
    • 它给出的信息是什么?
    • 当我写这个时: JLabel label = new JLabel(new ImageIcon(bytes_read));它给我一个错误。好像他不接受“bytes_read”
    • 对不起,我的错误,刚刚更新的答案,这是一个错字
    • 非常感谢,真的,但是没有显示出来……为什么? ://
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2013-06-12
    • 2016-11-18
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多