mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-13 20:00:05 +01:00
90 lines
2.4 KiB
JavaScript
90 lines
2.4 KiB
JavaScript
function LoadImage(ref, name, src, main_callback) {
|
|
function makeImage(datauri) {
|
|
var image = {
|
|
src: datauri,
|
|
format: datauri.split(':')[1].split(';')[0].split('/')[1]
|
|
}
|
|
return image;
|
|
}
|
|
function CImage(src, callback) {
|
|
var datauri;
|
|
if (!!src.match(/^data:/i)) {
|
|
datauri = src;
|
|
callback(datauri);
|
|
}
|
|
else if (!ref.options.inBrowser && !!src.match(/^https?:\/\//i)) {
|
|
require( src.match(/^(https?):\/\//i)[1] ).get(src,function(res){
|
|
var data = '';
|
|
var contentType = res.headers['content-type'];
|
|
res.setEncoding('base64');
|
|
res.on('data',function(chunk) {data += chunk;});
|
|
res.on('end',function() {
|
|
callback("data:"+contentType+";base64,"+data);
|
|
});
|
|
});
|
|
}
|
|
else if (ref.options.inBrowser) {
|
|
var ext = src.split('.').pop();
|
|
var image = document.createElement('img');
|
|
var canvas = document.createElement('canvas');
|
|
var context = canvas.getContext('2d');
|
|
image.onload = function() {
|
|
canvas.width = image.naturalWidth;
|
|
canvas.height = image.naturalHeight;
|
|
context.drawImage(image,0,0);
|
|
datauri = canvas.toDataURL(ext);
|
|
callback(datauri);
|
|
}
|
|
image.src = src;
|
|
}
|
|
else {
|
|
datauri = require('urify')(src);
|
|
callback(datauri);
|
|
}
|
|
}
|
|
|
|
function loadImage(name, src) {
|
|
var image = {
|
|
src: src,
|
|
steps: [{
|
|
options: {
|
|
id: ref.options.sequencerCounter++,
|
|
name: "load-image",
|
|
title: "Load Image"
|
|
},
|
|
UI: ref.UI({
|
|
stepName: "load-image",
|
|
stepID: ref.options.sequencerCounter++,
|
|
imageName: name
|
|
}),
|
|
draw: function() {
|
|
if(arguments.length==1){
|
|
this.output = CImage(arguments[0]);
|
|
return true;
|
|
}
|
|
else if(arguments.length==2) {
|
|
this.output = CImage(arguments[0]);
|
|
arguments[1]();
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
}]
|
|
};
|
|
CImage(src, function(datauri) {
|
|
var output = makeImage(datauri);
|
|
image.steps[0].output = output;
|
|
ref.images[name] = image;
|
|
ref.images[name].steps[0].UI.onSetup();
|
|
ref.images[name].steps[0].UI.onDraw();
|
|
ref.images[name].steps[0].UI.onComplete(image.steps[0].output.src);
|
|
main_callback();
|
|
return true;
|
|
});
|
|
}
|
|
|
|
return loadImage(name,src);
|
|
}
|
|
|
|
module.exports = LoadImage;
|