Boa gente.
Poxa estou precisando de uma ajuda rsrsrs.
Eu tenho que gravar imagens de alunos no banco de dados (Postgres - Foto 3x4), mas tenho 2 opções de obter esta imagem (upload de arquivo ou obter imagem via webcam) e salvar no banco.
A princípio estou usando o componente “<p:photoCam>” do Primefaces e consigo pegar a imagem, mas na hora de capturar o “<p:graphicimage>” não mostra a imagem. Pelo que eu ví o exemplo do site ele joga em um arquivo e exibe no componente. Eu estou tentando obter o “byte[]” e passar para o “<p:graphicimage>” convertendo para “StreamedContent”, mas nada acontece.
Segue meu código.
Obs.: Sei que normalmente se grava imagem em arquivos e só passa caminho para o banco de dados, mas como regra aqui infelizmente preciso gravar a imagem no banco e mostrar na tela.
Meu maior problema agora, é fazer com que a imagem capturada pela WebCam apareça na tela como no exemplo do PrimeFaces.org e como o retorno é byte[] dai eu ja consigo passar para o banco.
Se alguém puder me ajudar agradeço.
Da tela
<h:form>
<p:photoCam listener="#{webCamBean.onCapture}" widgetVar="pc" update="photo"/>
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/>
<p:graphicImage id="photo" value="#{webCamBean.image}"/>
</h:form>
Do bean
@ManagedBean
@RequestScoped
public class WebCamBean
{
private StreamedContent image;
public StreamedContent getImage()
{
return this.image;
}
public void setImage(StreamedContent image)
{
this.image = image;
}
public void onCapture(CaptureEvent captureEvent)
{
InputStream inputStream = new ByteArrayInputStream(captureEvent.getData());
image = new DefaultStreamedContent(inputStream, "image/png");
}
}