Carregar imagem do banco de dados

5 respostas
M

Bom dia…

Estou tentando carregar uma imagem do banco de dados, só que não ta aparecendo…

xhtml

<p:graphicImage  value="#{vitrineMB.carregaImagem()}" >
                        <f:param id="id_produto" name="id_produto" value="#{produto.codigo}" />
                    </p:graphicImage>

manegedBean

public StreamedContent carregaImagem(){
        String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id_produto");
        Produto tmp = new Produto(id);
        try {
            tmp = getProdutos().get(getProdutos().indexOf(tmp));
            InputStream is = new ByteArrayInputStream(tmp.getFoto());
            return new DefaultStreamedContent(is);
        } catch (Exception e) {
            return new DefaultStreamedContent();
        }
    }

Só que se trocar o

InputStream is = new ByteArrayInputStream(tmp.getFoto());

por

InputStream is =  new FileInputStream("C:\\imagem.jpg");

funciona
Alguém sabe o que pode estar acontecendo?

5 Respostas

Hebert_Coelho

Veja c não ta rolando alguma exception. Vc ta mascarando caso aconteça algum erro com return new DefaultStreamedContent();

M

Pior que não ta caindo no catch…

Ja fiz esse teste

Hebert_Coelho

A consulta está trazendo algum valor válido?

M

Traz o bytes,

Só que a impressão que eu tenho, é que parece que o componente do prime faces que não ta muito certo

M

eu faço assim pra carregar a logomarca no meu sistema

public StreamedContent getImagem() throws IOException { try { empresa = hibernateDao.getBean(1); BufferedImage img = ImageIO.read(new ByteArrayInputStream(empresa.getLogomarca())); File file = new File("imagem"); ImageIO.write(img, "png", file); FileInputStream fi = new FileInputStream(file); imagem = new DefaultStreamedContent(fi); } catch (Exception e) { FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! " + e, " ")); } return imagem; }

jsf

<p:graphicImage value="#{empresaBean.imagem}" alt="Logomarca"
			title="Logomarca" style="width: 190px; margin-left: 11px" />
Criado 15 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 5
Participantes 3