EDSDK (Canon camera) wrapper module for Node.js
The EDSDK provides a lot of features and not all of them are implemented in the module. Our use case was a photo booth application.
- List Cameras
- Camera Events
- Read Camera Properties
- Text
- Integer
- Integer Array
- Time
- Flags (true/false)
- Options (named list values)
- Aperture
- Shutter Speed
- Write Camera Properties
- Text Properties
- Integer
- Integer Array
- Time
- Flags (true/false)
- Options (named list values)
- Aperture
- Shutter Speed
- Take Picture
- Download To Directory
- Download To File
- Download To String (Base64)
- Live View
import {
cameraBrowser, CameraBrowser, CameraProperty, DownloadRequestEvent, PropertyOption, watchCameras
} from '../';
process.on('exit', () => cameraBrowser.terminate() );
process.on('SIGINT', () => process.exit());
// catch download request events
cameraBrowser.setEventHandler(
(eventName, event) => {
if (eventName === CameraBrowser.Events.DownloadRequest) {
const file = (event as DownloadRequestEvent).file;
console.log(file);
const localFile = file.downloadToPath(__dirname + '/images');
console.log(`Downloaded ${file.name}.`);
process.exit();
}
}
);
// get first camera
const camera = cameraBrowser.getCamera();
if (camera) {
console.log(camera);
camera.connect();
// configure
camera.getProperty(CameraProperty.ID.SaveTo).value = PropertyOption.SaveTo.Host;
camera.getProperty(CameraProperty.ID.ImageQuality).value = PropertyOption.ImageQuality.LargeJPEGFine;
camera.getProperty(CameraProperty.ID.WhiteBalance).value = PropertyOption.WhiteBalance.Fluorescent;
// trigger picture
camera.takePicture();
} else {
console.log('No camera found.');
}
// watch for camera events
watchCameras();The package does not include the Canon EDSDK files. To install the package you will have to build a TGZ.
- Unpack the Canon EDSDK as
EDSDKsubdirectory intothird_party. - Run
npm run package - Look for
../node_packages/@dimensional/napi-canon-cameras.tgz cd ../YourProject(Switch tp your project directory)npm -i ../node_packages/@dimensional/napi-canon-cameras.tgz
package- Create TGZ package for AddOnprebuild- Build for 32 and 64bit Node.jsprebuild:x64- Build for 64bit Node.jsprebuild:ia32- Build for 32bit Node.jsbuild:docs- Update API documentation in README.mdbuild:stubs- Update and build stubs (needs prebuild AddOn)clean- Remove build artifacts
Yes.