mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-14 04:10:04 +01:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
function ReplaceImage(ref,selector,steps,options) {
|
|
if(!ref.options.inBrowser) return false; // This isn't for Node.js
|
|
var tempSequencer = ImageSequencer({ui: false});
|
|
var this_ = ref;
|
|
var input = document.querySelectorAll(selector);
|
|
var images = [];
|
|
for (var i = 0; i < input.length; i++) {
|
|
if (input[i] instanceof HTMLImageElement) images.push(input[i]);
|
|
}
|
|
|
|
function replaceImage (img, steps) {
|
|
var url = img.src;
|
|
var ext = url.split('.').pop();
|
|
|
|
var xmlHTTP = new XMLHttpRequest();
|
|
xmlHTTP.open('GET', url, true);
|
|
xmlHTTP.responseType = 'arraybuffer';
|
|
xmlHTTP.onload = function(e) {
|
|
var arr = new Uint8Array(this.response);
|
|
var raw = String.fromCharCode.apply(null,arr);
|
|
var base64 = btoa(raw);
|
|
var dataURL="data:image/"+ext+";base64," + base64;
|
|
make(dataURL);
|
|
};
|
|
|
|
if(url.substr(0,11).toLowerCase()!="data:image/") xmlHTTP.send();
|
|
else make(url);
|
|
|
|
function make(url) {
|
|
tempSequencer.loadImage(url, function(){
|
|
this.addSteps(steps).run(function(out){
|
|
img.src = out;
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < images.length; i++) {
|
|
replaceImage(images[i],steps);
|
|
if (i == images.length-1)
|
|
options.callback();
|
|
}
|
|
}
|
|
|
|
module.exports = ReplaceImage;
|