我在本地硬盘驱动器上有一些图像集合,我想在网页上显示它们。在我的bean中,我创建了完整的html代码,将图像显示为链接到实际图像。如果我只使用#{bean.getImages()}(它返回html代码),那么它将被打印到屏幕上。如果我使用h:outputtext而不进行转义,则它将代码保存在元素中,并且不打印任何内容。如果我将其与转义一起使用,则在任何地方都找不到我的代码的踪迹。如何从显示在页面上的bean中获取元素?
代替从bean返回图像的html代码,您可以将图像转换为base64字符串
//read the image as a byte[]
public byte[] extractBytes (String ImageName) throws IOException {
// open image
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
// get DataBufferBytes from Raster
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
return ( data.getData() );
}
//......
byte[] image = extractBytes ("myimage.png");
string encodedfile = new String(Base64.encodeBase64(image), "UTF-8");
并且在您的页面中将其与]连接在一起
<img src="data:image/png;base64,#{bean.getImages()}"/>