[RESOLVIDO]Apresentar imagem em um browser

Boa noite prezados.

   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:

[code]//gravando imagem no BD
public void gravarImagem() throws IOException{
InputStream input = null;
ByteArrayOutputStream out = new ByteArrayOutputStream();
input = getImagemPeca().getInputStream();

    try {             
         byte[] buffer = new byte[1024]; //you can configure the buffer size
          while (input.read(buffer) != -1)
              out.write(buffer); //copy streams*/
          byte[] result = out.toByteArray();            
          pecasConsumivel.setImagemProduto(result);          
          

   } catch (IOException e) {

         //if (file != null) file.delete();
         //e.printStackTrace();
 }

 
}

//pesquisando imagem no BD

public void pesquisaImagem(){
byte [] imgByte = (objsConsultar.get(0).getImagemProduto());
File file = null;
OutputStream output = null;
InputStream input = null;
try {
String prefix = FilenameUtils.getBaseName(“peca”);
String suffix = FilenameUtils.getExtension(".jpeg");
file = File.createTempFile(prefix + “_”, “.” + suffix, new File("/projeto/"));
input = new ByteArrayInputStream(imgByte);
output = new FileOutputStream(file);
IOUtils.copy(input, output);

   } catch (IOException e) {

         //if (file != null) file.delete();
         //e.printStackTrace();
       //return "";
 }

[/code]

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.

Fico no aguardo de uma solução.

Leia nosso how to.
Coloque teu código envolto pelas tags [code]

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.

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.

<img src="caminho/para/imagem.jpeg"/>
   Entaum cara, na verdade não quero que essa imagem fique salva em um diretório. A ideia é quando o usuário fizer uma pesquisa de alguma peça pelo código por exemplo ele ter a opção de clicar em um link referente a peça, tipo um link [b]imagem[/b] e mostrar a imagem da peça cujo o código foi pesquisado. Eu até pensei nessa sua ideia mas ao clicar no link imagem teria que abrir uma página em jsf autoexecutando o método para pesquisar a imagem.
   Estou com a estrutura toda pronta, e até testei usando o JFrame e funcionou belezinha, mas quero que funcione com browser. 
   Na verdade ao pesquisar a imagem esse valor teria que retornar em html. Sei que teria q alterar o método de void para String por exemplo.

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?

[quote=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?[/quote]

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.

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

//bean

[code]public String getPesquisaImagem(){
byte [] imgByte = (objsConsultar.get(0).getImagemProduto());
File file = null;
OutputStream output = null;
InputStream input = null;
try {
String prefix = FilenameUtils.getBaseName(“peca”);
String suffix = FilenameUtils.getExtension(".jpeg");
file = File.createTempFile(prefix + “", “.” + suffix, new File(“c:/projeto/”));
//file = File.createTempFile(prefix + "
”, “.” + suffix);
input = new ByteArrayInputStream(imgByte);
output = new FileOutputStream(file);
IOUtils.copy(input, output);
String dados = String.valueOf(file.getPath());
pesquisaImagem = dados.replace( “\”, “/” );
output.flush();
output.close();

   } catch (IOException e) {

         FacesContext context = FacesContext.getCurrentInstance();
         context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! " + e, " "));
         
       
 }
    return pesquisaImagem;
}[/code]

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.

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; }

Dessa maneira vai rolar sussa :wink:

Boa noite amigo.

Entaum, to apanhando para mostrar a imagem em jsp. Consigo gravar e gerar no banco, mas na hora de mostrar em jsp ou html, o bicho tá pegando. Tentei usar o <h:graphicImage> mas não tá dando certo.
O StreamedContent, nunca usei. Será necessário utilizar alguma lib específica pra ele? Estou usando o netbeans, jboss e richfaces.

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.

Ou é esse exemplo:

Ou é esse aqui:

Faz muito tempo que fiz, tem várias maneiras de upload ae.

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.