Turn audio into a shareable video. forked from nypublicradio/audiogram

draw-frames.js 836B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var fs = require("fs"),
  2. path = require("path"),
  3. queue = require("d3").queue;
  4. function drawFrames(renderer, options, cb) {
  5. var frameQueue = queue(10);
  6. for (var i = 0; i < options.numFrames; i++) {
  7. frameQueue.defer(drawFrame, i);
  8. }
  9. frameQueue.awaitAll(cb);
  10. function drawFrame(frameNumber, frameCallback) {
  11. renderer.drawFrame(frameNumber);
  12. fs.writeFile(path.join(options.frameDir, zeropad(frameNumber + 1, 6) + ".png"), renderer.context.canvas.toBuffer(), function(err) {
  13. if (err) {
  14. return frameCallback(err);
  15. }
  16. if (options.tick) {
  17. options.tick();
  18. }
  19. return frameCallback(null);
  20. });
  21. }
  22. }
  23. function zeropad(str, len) {
  24. str = str.toString();
  25. while (str.length < len) {
  26. str = "0" + str;
  27. }
  28. return str;
  29. }
  30. module.exports = drawFrames;