Stream / BufferedImage / JDBC

Résolu
cs_Miti Messages postés 28 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 30 septembre 2005 - 14 sept. 2005 à 19:47
cs_Miti Messages postés 28 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 30 septembre 2005 - 17 sept. 2005 à 09:32
Bonjour, bonjour...

Je rencontre quelques problèmes à insérer des BufferedImage dans SQL.


En faite j’y parvient très bien en en procédant comme ça :

FileOutputStream out = new FileOutputStream( url );

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( out );
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam( pBufImage );
param.setQuality( 0.5f, false );
encoder.setJPEGEncodeParam( param );
encoder.encode( pBufImage );
out.close();

File monFile1 = new File( url );

FileInputStream istreamImage1 = new FileInputStream( monFile1 );

PreparedStatement ps = connexion.prepareStatement( "insert into x (Img_1) values ( ? ) " );

ps.setBinaryStream( 1, istreamImage1, (int) monFile1 .length() );

Donc si on résume je fais un FileOutputStream et le sauve au format JPEG en local, puis le récupère sous forme de File pour ensuite le transformer en FileInputStream pour enfin l'envoyer par la méthode setBinaryStream de PreparedStatement .

J'essaye donc de simplifier cette procèdure.

Pour faire plus court j’ai essayé un truc comme ça :

ImageInputStream streamImage = ImageIO.createImageInputStream( this.bufImage );


PreparedStatement ps = connexion.prepareStatement( "insert into x (Img_1) values ( ? ) " );

ps.setBinaryStream( 1, streamImage , (int) streamImage.length() );

Mais bien entendu c'est pas si simple


Si qqun connait la soluce, il sera mille fois remercié !!!

1 réponse

cs_Miti Messages postés 28 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 30 septembre 2005
17 sept. 2005 à 09:32
Le plus court que j'ai réussi à faire ça resemble à ça:

ImageIO.write( this.bufferedImage , "jpg", new File("bufferedImage.jpg") );
FileInputStream img = new FileInputStream("bufferedImage.jpg");

PreparedStatement ps = connexion.prepareStatement( "insert into x (Img_1) values ( ? ) " );
ps.setBinaryStream( 1, img , (int) img.available() );

Il y a 4 lignes et ça oblige à faire un accès sur le HD. Snif...
3
Rejoignez-nous