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: :wink:](//www.guj.com.br/images/emoji/twitter/wink.png?v=5)
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.