<a:form> <h:panelGrid columns="3" cellpadding="5"> <a:photoCam widgetVar="pc" listener="#{photoCamView.oncapture}" update="photo" /> <a:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/> <a:outputPanel id="photo"> <a:graphicImage name="demo/images/photocam/#{photoCamView.filename}.jpeg" rendered="#{not empty photoCamView.filename}"/> </a:outputPanel> </h:panelGrid> </a:form>
package com.jarch.showcase.view.multimedia; import java.io.File; import java.io.IOException; import javax.faces.FacesException; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.imageio.stream.FileImageOutputStream; import org.primefaces.event.CaptureEvent; @ManagedBean @ViewScoped public class PhotoCamView { private String filename; private String getRandomImageName() { int i = (int) (Math.random() * 10000000); return String.valueOf(i); } public String getFilename() { return filename; } public void oncapture(CaptureEvent captureEvent) { filename = getRandomImageName(); byte[] data = captureEvent.getData(); ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); String newFileName = externalContext.getRealPath("") + File.separator + "resources" + File.separator + "demo" + File.separator + "images" + File.separator + "photocam" + File.separator + filename + ".jpeg"; FileImageOutputStream imageOutput; try { imageOutput = new FileImageOutputStream(new File(newFileName)); imageOutput.write(data, 0, data.length); imageOutput.close(); } catch(IOException e) { throw new FacesException("Error in writing captured image.", e); } } }