我正在尝试使用Primeface的PhotoCam(版本6.2),并使用其展示中的示例,该相机不适用于Firefox(开发人员版63.0b13)或Safari 12 ..版,并且对我不起作用。在移动设备上的Safari上运行(移动设备在iOS12上)。
它已部署到具有https的网站,并且可以在Chrome浏览器中同时在台式机和移动浏览器上使用。
此刻,我正在使用展示演示,该演示位于此处(代码也发布在下面):
https://www.primefaces.org/showcase/ui/multimedia/photoCam.xhtml
我什至可以下载演示战争文件并尝试该版本,但成功没有改变。
有人可以帮忙吗?
发生了什么事?
在Firefox上:
在Safari上:
在移动设备上的Safari上:
这是xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" template="/common/template.xhtml">
<ui:define name="title">PhotoCam</ui:define>
<ui:define name="content">
<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>
</ui:define>
这是Java类
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);
}
}}
我对此表示感谢。
(我也已在Primefaces论坛上发布了此信息,希望这里或那里的人能为我提供帮助。当我发现这一点时,我将同时更新两个网站)
克里斯蒂娜
答案 0 :(得分:1)
只需从Github下载webcam.js并将其放在您的xhtml文件夹中。
然后将<script type="text/javascript" src="webcam.js"></script>
添加到您的xhtml文件中
答案 1 :(得分:0)
我最近将Photocam更新到其JS插件的最新版本,并且还修复了IE11的类似错误。看到这里:
https://github.com/primefaces/primefaces/issues/4094
https://github.com/primefaces/primefaces/issues/3755
我强烈建议尝试从GitHub下载6.3-SNAPSHOT版本的PrimeFaces,并告知我们最新版本是否已解决您的问题。