@brick-a-brack/napi-canon-cameras
EDSDK (Canon camera) wrapper module for Node.js
Features
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.
Usage
import {
Camera, CameraProperty, FileChangeEvent, ImageQuality,
Option,
watchCameras
} from '../';
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.setProperties(
{
[CameraProperty.ID.SaveTo]: Option.SaveTo.Host,
[CameraProperty.ID.ImageQuality]: ImageQuality.ID.LargeJPEGFine,
[CameraProperty.ID.WhiteBalance]: Option.WhiteBalance.Fluorescent
}
);
// trigger picture
camera.takePicture();
} else {
console.log('No camera found.');
}
// watch for camera events
watchCameras();
Build Package
The package does not include the Canon EDSDK files. To install the package you will have
to build a TGZ.
- Unpack the Canon EDSDK into
third_party
. Keep the package name as subdirectory.
EDSDKv131800W.zip
→ third_party/EDSDKv131800W
- Make sure the variable
edsdk_version
in binding.gyp
matches the EDSDK version. (The numeric part of the
package name)
- Run
npm run package
- Look for
./dist/napi-canon-cameras.tgz
cd ../YourProject
(Switch to your project directory)
npm i ../path/to/folder/napi-canon-cameras.tgz
NPM Tasks
package
- Create TGZ package for AddOn
prebuild
- Build for 32 and 64bit Node.js
prebuild:x64
- Build for 64bit Node.js
prebuild:ia32
- Build for 32bit Node.js
build:docs
- Update API documentation in README.md
build:stubs
- Update and build stubs (needs prebuild AddOn)
clean
- Remove build artifacts
FAQ
Does the module work in Electron Applications?
Yes.