- 作者:zhaozj
- 发表时间:2020-12-23 11:00
- 来源:未知
问题(网友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;
}