Article Gevorg Arutiunian · Feb 22, 2019 2m read

Embed a Webcam Feature into a ZEN Page

(Originally posted by @Sascha Kisser on March 11, 2014) The following 2 classes are a component for a webcam, and a ZEN page that incorporates it. The webcam can take a snapshot and save it to Caché:


Class skisser.webcamPage extends %ZEN.Component.page
{
	Parameter APPLICATION;
	 
	Parameter PAGENAME;
	 
	Parameter DOMAIN;
	 
	XData Style
	{
	<style type="text/css">
	</style>
	}
	 
	XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
	{
	<page xmlns="http://www.intersystems.com/zen" title="">
	<button caption="startCam" onclick="zenPage.startCam()"/>
	<button caption="Snapshot" onclick="zenPage.snapshot()"/>
	<camComponent width="600px" height="800px" id="mycam"/>
	<image id="image_source" src="" hidden="true"/>
	 
	</page>
	}
	 
	ClientMethod snapshot() [ Language = javascript ]
	{
	    var snap = zenPage.getComponentById('image_source')
	    zen('mycam').snapshot(snap);
	    zen('mycam').SaveImageToDB(snap);
	    snap.refreshContents();
	}
	 
	ClientMethod startCam() [ Language = javascript ]
	{
	    zen('mycam').startWebcam();
	}
}

Class skisser.webcamPage extends %ZEN.Component.page
{
	Parameter APPLICATION;
	 
	Parameter PAGENAME;
	 
	Parameter DOMAIN;
	 
	XData Style
	{
	<style type="text/css">
	</style>
	}
	 
	XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
	{
	<page xmlns="http://www.intersystems.com/zen" title="">
	<button caption="startCam" onclick="zenPage.startCam()"/>
	<button caption="Snapshot" onclick="zenPage.snapshot()"/>
	<camComponent width="600px" height="800px" id="mycam"/>
	<image id="image_source" src="" hidden="true"/>
	 
	</page>
	}
	 
	ClientMethod snapshot() [ Language = javascript ]
	{
	    var snap = zenPage.getComponentById('image_source')
	    zen('mycam').snapshot(snap);
	    zen('mycam').SaveImageToDB(snap);
	    snap.refreshContents();
	}
	 
	ClientMethod startCam() [ Language = javascript ]
	{
	    zen('mycam').startWebcam();
	}
}

Here's a link to the code on GitHub: https://github.com/intersystems-community/code-snippets/blob/master/src/cls/skisser/webcamPage.cls