如何关闭PrimeFaces PhotoCam?

时间:2017-03-15 18:00:17

标签: image jsf

我正在使用photocam拍照相机,但捕捉选项始终打开。我正在使用具有创建按钮的photocam自动启动属性,该按钮邀请类似的方法:

    public void pcFotoStarter() 
{
        if (pcFoto == Boolean.FALSE)
            pcFoto = Boolean.TRUE;
        else
            pcFoto = Boolean.FALSE;
}

此方法使我的方法的pcFoto字段为true或false,然后我定义了<f:ajax execute="button" render="PhotoCam" />

根据pcFoto布尔值(true或false),photocam是否正常工作。问题是,photocam立即开始,我只能关闭1次photocam.Ant比我无法重新启动photocam。我的网络摄像头使用黄色指示灯闪烁。这就像网络摄像头已经在使用中。

1 个答案:

答案 0 :(得分:0)

要关闭相机时尝试执行此Javascript代码

Webcam.stream.getTracks().forEach(x=> x.stop());

在我的情况下,我在打开p:dialog(动态)中的p:photoCam的同时打开相机,并在“关闭”事件上打开了p:ajax回调。像这样

   <p:dialog id="modalDialog" widgetVar="photoEditDialog"
              modal="true" onHide="PF('photoEditDialog').toggleMaximize();"
              resizable="false" closeOnEscape="true"
              dynamic="true"
    >
      <p:ajax event="close" update="photo @this" onsuccess="Webcam.stream.getTracks().forEach(x=> x.stop());"/>
      <div style="display: flex;">
        <section>
          <h1>Camera</h1>
           <p:photoCam widgetVar="photoCam" listener="#{cc.attrs.value.onPhotoCapture}" update="preview"
                            width="400" height="300" photoWidth="1024" photoHeight="768"
            />
              <p:commandButton type="button" value="Capture" onclick="PF('photoCam').capture()"/>
        </section>
         <section>
           <h1>Preview</h1>
           <p:graphicImage id="preview" value="#{cc.attrs.value.photo}" stream="false"/>
        </section>
      </div>
    </p:dialog>