Afficher une image d'une BD dans une page JSF
Bonjour,
Je voudrais récupérer une image d'une BD pour l'afficher dans une page JSF.
Je récupère à partir d'une requête sql le type blob mais je ne sais pas comment le formater pour que l'image soit visible sur ma page.
Doit-je travailler avec le parametre "value" de mon <h:GraphicImage> ou bien avec le pareametre "url"? sachant que dans la base de données il y a directement les images et non pas des URL qui pointent vers elles.
Merci.
Récupération des images de la base donnée pour les afficher sur une page JSF
Bonjour,
j'ai eu le même problème, j'ai une base de donnée dont j'ai un tableau "Video". Dans ce table j'ai un champ de type blob (affiche du film).
j'ai réussi à récupérer les images et les afficher sur la page jsf , mais via la création d'un fichier sous le répertoire /Web Pages/resource/images qui contient le codage du suite binaire stockée dans le champ blob en une image.jpg.
Le problème c'est que cette méthode génère les même images dans la base dans un répertoire sous le disque dur , ce qui est redondant, j'ai les images deux fois, comment je dois procéder pour corriger ma solution ????
voilà le code de la méthode du VideoController.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public String image(int id) {
String image = null;
try {
Video V=getFacade().find(id);
byte[] imageInByte= V.getTrailerPicture();
// InputStream in = new ByteArrayInputStream(imageInByte);
// BufferedImage bImageFromConvert = ImageIO.read(in);
InputStream in = new ByteArrayInputStream(imageInByte);
BufferedInputStream bis=new BufferedInputStream(in);
Image bImageFromConvert=ImageIO.read(bis);
if(bImageFromConvert!=null){
BufferedImage bImg=new BufferedImage(bImageFromConvert.getWidth(null), bImageFromConvert.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g=bImg.getGraphics();
g.drawImage(bImageFromConvert, 0, 0, null);
g.dispose();
File file=new File("D:/VOD/build/web/resources/images/image"+id+".jpg");
ImageIO.write(bImg, "jpg", file);
image=file.getName();
}
}
catch (Exception e) {
// ecritureErreurDansFichierLog(e);
}
return ("/resources/images/"+image);
} |
et j'affiche le images sur la page JSF à l'aide de ce code :
Code:
<h:graphicImage value="#{videoController.image(item.idVideo)}" width="200" height="200"/>