PhotoCam is an input component to take photos with the webcam and send them to the backend model.
Documentation<h:form> <h:panelGrid columns="3" cellpadding="5"> <p:photoCam widgetVar="pc" listener="#{photoCamView.oncapture}" update="photo" /> <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/> <p:outputPanel id="photo"> <p:graphicImage name="demo/images/photocam/#{photoCamView.filename}.jpeg" rendered="#{not empty photoCamView.filename}"/> </p:outputPanel> </h:panelGrid> </h:form>
@Named @ViewScoped public class PhotoCamView implements Serializable { 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); } } }