Récupérer une Image stockée sous forme de BLOB sur un disque dur MYSQL

j'essaie de créer un PDF basé sur l'information qui réside dans une base de données. Sachez que j'ai besoin de récupérer une image TIFF qui est stocké comme un BLOB sur une base de données mysql à partir de Java. Et je ne sais pas comment le faire. Les exemples que j'ai trouvés montrent comment le récupérer et le sauver comme un dossier (mais sur le disque) et je devais résider sur la mémoire.

nom de la Table: IMAGENES_REGISTROS

BLOB nom de champ: IMAGEN

Des Idées?

15
demandé sur Bozho 2010-01-28 00:09:14

4 réponses

sur votre ResultSet appel:

Blob imageBlob = resultSet.getBlob(yourBlobColumnIndex);
InputStream binaryStream = imageBlob.getBinaryStream(0, imageBlob.length());

alternativement, vous pouvez appeler:

byte[] imageBytes = imageBlob.getBytes(1, (int) imageBlob.length());

comme BalusC a noté dans son commentaire, vous feriez mieux d'utiliser:

InputStream binaryStream = resultSet.getBinaryStream(yourBlobColumnIndex);

et puis le code dépend de comment vous allez lire et intégrer l'image.

18
répondu Bozho 2010-01-28 12:11:06
private void loadFileDataBlobFromDataBase()
             {
            List<Blob> bFile = jdbcTemplate.query(sql, new RowMapper<Blob>() {
                @Override
                public Blob mapRow(ResultSet rs, int rowNum)
                        throws SQLException {
                    return rs.getBlob(1);
                }
            });
            if (bFile != null && bFile.size() > 0) {
                bufReader = new BufferedReader(new InputStreamReader(bFile.get(
                        0).getBinaryStream()));
            }
            if (null != bufReader) {
                dataVO record = null;
                String lineStr = bufReader.readLine();
                record = (dataVO) lineMapper.mapLine(lineStr, 1);               
            }
        }
    }
1
répondu Raje 2016-05-20 05:56:03
imagebytes = rs.getBytes("images");
image=getToolkit().createImage(imageBytes);
Image img = image.getScaledInstance(100,100,Image.SCALE_SMOOTH);
ImageIcon icon=new ImageIcon(img);
jLabel6.setIcon(icon);

essayez ce code pour obtenir l'image réglable de blog Mysql en netbeans

1
répondu Ratul Arora 2018-03-30 07:52:29
final String dbURL = "jdbc:mysql://localhost:3306/portfolio";
    final String dbUser = "root";
    final String dbPass = "";

    Connection conn = null;
    Statement stmt = null;

    try {
        //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName("com.mysql.jdbc.Driver");

        conn = DriverManager.getConnection(dbURL, dbUser, dbPass);
        System.out.println("db connected");
        stmt = (Statement) conn.createStatement();

        ResultSet rs1;
        rs1 = stmt.executeQuery("select profileImage from tbl_welcome where id = 1117");

        if (rs1.next()) {
            byte[] imgData = rs1.getBytes("profileImage");//Here....... r1.getBytes() extract byte data from resultSet 
            System.out.println(imgData);
            response.setHeader("expires", "0");
            response.setContentType("image/jpg");

            OutputStream os = response.getOutputStream(); // output with the help of outputStream 
            os.write(imgData);
            os.flush();
            os.close();

        }
    } catch (SQLException ex) {
        // String message = "ERROR: " + ex.getMessage();
        ex.printStackTrace();
    } finally {
        if (conn != null) {
            // closes the database connection
            try {
                conn.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
1
répondu Surendra Shrestha 2018-04-27 10:41:40