问题(网友zslzspzsagd 原文):我想通过ireport在detail部分来动态的现实数据库中的图片(我的数据库中存储的是服务器上的图片所在的路径)。
因为很久没有做JasperReport了,只是说一下个人的一点想法,不对之处,还望指正。
首先,detail里肯定需要定义一个field:
<field name="Image" class="java.awt.Image"/>
注意:class 为 java.awt.Image
其次,肯定需要定义自己的datasource
在 public Object getFieldValue(JRField field) throws JRException
里,判断如果是Image的路径字段,则载入返回图片(应为java.awt.image.BufferedImage)。
如:public Object getFieldValue(JRField field) throws JRException{
Object value = null;
String fieldName = field.getName();
if ("Image".equals(fieldName))
{
String imagePath = (根据index和fieldName取数据库信息);
value = getImage(imagePath );
}else{
...........
}
return value;
}
private BufferedImage getImage(String imagePath){
Image image = Toolkit.getDefaultToolkit().getImage(imagePath);
// Create the buffered image.
BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
// Copy image to buffered image.
Graphics g = bufferedImage.createGraphics();
// Clear background and paint the image.
g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(null),
image.getHeight(null));
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
}