-
Notifications
You must be signed in to change notification settings - Fork 141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Animated Gif comes out black w/ Web Workers #24
Comments
Also tried posting to the web worker on each interval: Main JS toggleSnapshotRecord() {
this.isRecording = !this.isRecording;
$(document.body).toggleClass("is-recording");
let interval = (this.captureSecondsDelay - 1) * 1000;
let snapCount = 0;
if (this.isRecording) {
this.snapshotInterval = setInterval(() => {
let messageData = {
size: [this.outputWidth, this.outputHeight],
frame: this.canvasContext.getImageData(0, 0, this.outputWidth, this.outputHeight)
};
if (snapCount === 0)
messageData["start"] = true;
if (snapCount === this.captureFramesNumber - 1)
messageData["finish"] = true;
this.gifWorker.postMessage(messageData);
snapCount = snapCount + 1;
if (snapCount === this.captureFramesNumber)
return this.toggleSnapshotRecord();
}, interval);
} else {
clearInterval(this.snapshotInterval);
this.gifWorker.onmessage = function(event) {
console.log(event.data);
};
};
}; Web Worker var encoder = new GIFEncoder();
encoder.setRepeat(0);
encoder.setDelay(300);
self.addEventListener("message", function(event) {
var data = event.data;
if (data.start) {
encoder.start();
} else {
encoder.setProperties(true, true);
}
encoder.setSize(data.size[0], data.size[1]);
encoder.addFrame(data.frame, true);
if (data.finish) {
encoder.finish();
self.postMessage("data:image/gif;base64," + encode64(encoder.stream().getData()));
}
}, false); |
Does the black output GIF at least appear to have the correct number of frames? |
Negative. It looks to be just the one frame (upon inspection in Apple Preview). |
Got it. In passing |
Why are you calling:
? It seems like those are internal parameters managed by the encoder and don't need to be changed. Also it looks like the setSize() call can be moved into the if (data.start) { ... } area. Clay Budin |
I'm trying to use Web Workers to handle the Gif creation, and while I could get animated Gif generation working without using the worker, once I moved everything over to the worker I can only get a black image with the specified dimensions as the output.
In my main JS:
In my Web Worker:
What would I be missing here? Any help is much appreciated!
The text was updated successfully, but these errors were encountered: