Tenho uma imagem salva no BD do tipo byte e estou querendo visualizá-la utilizando o browser. Meu sistema já carrega a imagem de uma pasta qualquer converte para byte e grava no BD, e também consigo pesquisá-la e gravá-la em uma pasta temporária a imagem resgatada. Agora quero pegar essa mesma imagem e apresentá-la em um browser do tipo IE, Firefox, etc. Abaixo segue o código:
//gravando imagem no BDpublicvoidgravarImagem()throwsIOException{InputStreaminput=null;ByteArrayOutputStreamout=newByteArrayOutputStream();input=getImagemPeca().getInputStream();try{byte[]buffer=newbyte[1024];//you can configure the buffer sizewhile(input.read(buffer)!=-1)out.write(buffer);//copy streams*/byte[]result=out.toByteArray();pecasConsumivel.setImagemProduto(result);}catch(IOExceptione){//if (file != null) file.delete();//e.printStackTrace();}}//pesquisando imagem no BDpublicvoidpesquisaImagem(){byte[]imgByte=(objsConsultar.get(0).getImagemProduto());Filefile=null;OutputStreamoutput=null;InputStreaminput=null;try{Stringprefix=FilenameUtils.getBaseName("peca");Stringsuffix=FilenameUtils.getExtension(".jpeg");file=File.createTempFile(prefix+"_","."+suffix,newFile("/projeto/"));input=newByteArrayInputStream(imgByte);output=newFileOutputStream(file);IOUtils.copy(input,output);}catch(IOExceptione){//if (file != null) file.delete();//e.printStackTrace();//return "";}
A imagem está sendo salva dentro da pasta projeto, mas eu gostaria que ao executar a pesquisa apresentasse a imagem em um browser. Estou usando JSF 1.2, richfaces, myfaces, ajax.
Leia nosso how to.
Coloque teu código envolto pelas tags [code]
C
CURIOSO_GYN
Muito bom dia drsmachado!
Atendido a sua solicitação. Então cara, estou querendo apenas apresentar a imagem que eu pesquisar no Banco de Dados. O valor (imagem) pesquisada no BD tenho na variável file, presciso apenas pegar esse valor e apresentar no Html ou em pdf.
Fico no aguardo de alguma novidade.
D
drsmachado
Se você recria a imagem, a partir dos bytes do banco de dados e salva em um diretório, basta referenciar na tag img o src da mesma.
Cara, o graphicImage não mostra a imagem, apenas um "X". A imagem está sendo gerada belezinha no diretório, mas quando vou tentar abrir no browser ela não é mostrada. Vc sabe o q poderia ser?
D
drsmachado
CURIOSO_GYN:
drsmachado, muito boa noite!
Cara, o graphicImage não mostra a imagem, apenas um "X". A imagem está sendo gerada belezinha no diretório, mas quando vou tentar abrir no browser ela não é mostrada. Vc sabe o q poderia ser?</blockquote>
Provavelmente você está passando a referência errada do caminho da imagem. Veja o html gerado e cheque se você encontra a imagem por ele.
C
CURIOSO_GYN
Boa tarde drsmachado.
Cara já procurei em todo lugar, mas não encontro resposta. O meu graphicImage não me mosta a imagem. abaixo o código:
//imagemPeca.jsp
<h:graphicImagevalue="#{PecasConsumivelControle.pesquisaImagem}"alt="imagemPeca"title="Imagem da Peça"style="width: 190px; margin-left: 11px"/>
Eu depurei o programa e ele me retorna o caminho certinho onde consta a imagem, mas ao passar para imagePeca.jsp a imagem não aparece. Se eu digito na url o caminho armazenado na variável pesquisaImagem, a imagem abre normalmente. Não faço ideia do que está ocorrendo.
O
oiacrasec
Usa StreamedContent, eu fiz assim ó:
public StreamedContent getImagem() {
interfaceFoto = new HibernateDAO<Foto>(Foto.class);
Foto foto = interfaceFoto.getBean((long)5);
imagemST = new DefaultStreamedContent(new ByteArrayInputStream(foto.getImagem()));
return imagemST;
}
private StreamedContent imagemST;
public StreamedContent getImagemST() {
return imagemST;
}
public void setImagemST(StreamedContent imagemST) {
this.imagemST = imagemST;
}
Se vc puder me dar uma luz, ficaria muito grato!!!
Consigo obter o caminho certo de onde a imagem foi montada, mas não to conseguindo passar esse caminho para a url para que seja aberta a imagem. Afinal de contas no <h:graphicImage> se deve usar o value ou a URL? Tipo <h:graphicImage value="#{meubean.metodo}"/> ou <h:graphicImage url="#{meubean.metodo}"/>. No método deveria retornar o caminho onde está a imagem?
Obrigado.
O
oiacrasec
Ou é esse exemplo:
Ou é esse aqui:
Faz muito tempo que fiz, tem várias maneiras de upload ae.
C
CURIOSO_GYN
Fala oiacrasec!! Blz!!?
A parada funfou!!!. Mas kra, dê-me uma luz, estou usando jsf 1.2 com o <h:commandLink>, e a aplicação funciona blz, mas a tela dá uma congelada. Então resolvi usar o <p:commandLink>, mas quando eu executo essa ação me aparece um erro dizendo “primeFaces não está definido na minhaTela.jsp”. Vc tem ideia do que possa ser? E o pior é que não aparece erro na saída do compilador.