IReport + Imagem: mistério

1 resposta
renatobach

Em minha aplicação, eu tenho a opção de enviar ao relatório uma imagem que está no banco de dados ou uma imagem padrão, caso no banco o valor da imagem for null. Para o ireport eu mando a imagem no formato string como parâmetro, ou seja, o caminho da mesma. Quando eu possuo a imagem no banco, funciona bem. No meu código Java eu tranformo os bytes que representam a imagem no banco em um arquivo no disco e envio ao ireport o caminho onde gravei essa imagem. Sem problemas, o relatório é gerado com a imagem.

Então começa o mistério… (pelo menos pra mim)

Ao tentar enviar o caminho da imagem padrão (que é uma imagem qualquer, gravada em lugar qualquer), o ireport gera a seguinte exceção:

Notem o RED no lugar do caminho da imagem. Se eu coloco um caminho onde não existe a imagem, a exceção me retorna a mensagem correta:

O mistério é: pq ele entende como RED o caminho correto da imagem? Tanto a imagem que gravo da base de dados, quanto a que já está gravada estão no mesmo diretório.

Já tentei de tudo que é forma descobrir e não estou decifrando isso.

Obrigado.

1 Resposta

renatobach

Vou colocar o código para ficar bem claro o problema:

String mapPath = reportPath + "Map" + File.separator + Constants.IMAGE_NO_MAP_DEFINED; //CAMINHO DA IMAGEM PADRÃO
		
if (tourBean.getToursMap() != null) {
       mapPath = generatedReportPath + File.separator + "map." + Constants.BMP;
	        
       BufferedImage image = new BufferedImage(256, 256, BufferedImage.TYPE_USHORT_565_RGB);
       BufferedImage imageAsBytes = ImageIO.read(new ByteArrayInputStream(tourBean.getToursMap()));		
			
       Graphics2D g2d = image.createGraphics();
       g2d.drawImage(imageAsBytes, 0, 0, 256, 256, null);
       g2d.dispose();		
	        
       File outputfile = new File(mapPath);
       ImageIO.write(image, Constants.BMP, outputfile);
}
		
Map<Object, Object> parameters = new HashMap<Object, Object>();
parameters.put("SUBREPORT_DIR", reportPath + File.separator + "Map" + File.separator);
parameters.put("MAP_IMAGE", mapPath);
		
JRDataSource jrds = new JRBeanCollectionDataSource(mapList);
		
JasperFillManager.fillReportToFile(reportPath + "Map" + File.separator + "Map.jasper", parameters, jrds); //EXCEÇÃO PARA IMAGEM PADRÃO
Criado 21 de janeiro de 2010
Ultima resposta 21 de jan. de 2010
Respostas 1
Participantes 1