Error while parsing Gif in Typescript/Javascript












1















I am trying to parse a .GIF in Typescript. What I really want is to extract the frames, but that if a bit much right now.
I am right now trying to adapt the script from:
http://slbkbs.org/jsgif/ to work in typescript.
Here is my attempt: https://stackblitz.com/edit/typescript-syn3av
I feel like I am VERY close, but I am getting an error on line 296 as I parse a block. I am at position 205 in the .GIF file.
If anyone has attempted parsing .GIFs before, I would really appreciate info on how to handle unexpected data.



On line 335 of gif.ts



switch (String.fromCharCode(block.sentinel)) {
case '!':
block.type = 'ext';
parseExt(block);
break;
case ',':
block.type = 'img';
parseImg(block);
break;
case ';':
block.type = 'eof';
handler.eof && handler.eof(block);
break;
default:
throw new Error('Unknown block: 0x' + block.sentinel.toString(16)); // TODO: Pad this with a 0.
}


the result of String.fromCharCode(block.sentinel) seems to be: 0xfd or ý and that is no good.... Am I out of order with how I increment my position?



Update:
I changed the .GIF, and now I am getting an error code: 0x0



Thanks!










share|improve this question




















  • 2





    You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

    – amn
    Nov 24 '18 at 22:28











  • @amn If you post that as an answer I will accept it.

    – Kevin192291
    Nov 25 '18 at 4:31
















1















I am trying to parse a .GIF in Typescript. What I really want is to extract the frames, but that if a bit much right now.
I am right now trying to adapt the script from:
http://slbkbs.org/jsgif/ to work in typescript.
Here is my attempt: https://stackblitz.com/edit/typescript-syn3av
I feel like I am VERY close, but I am getting an error on line 296 as I parse a block. I am at position 205 in the .GIF file.
If anyone has attempted parsing .GIFs before, I would really appreciate info on how to handle unexpected data.



On line 335 of gif.ts



switch (String.fromCharCode(block.sentinel)) {
case '!':
block.type = 'ext';
parseExt(block);
break;
case ',':
block.type = 'img';
parseImg(block);
break;
case ';':
block.type = 'eof';
handler.eof && handler.eof(block);
break;
default:
throw new Error('Unknown block: 0x' + block.sentinel.toString(16)); // TODO: Pad this with a 0.
}


the result of String.fromCharCode(block.sentinel) seems to be: 0xfd or ý and that is no good.... Am I out of order with how I increment my position?



Update:
I changed the .GIF, and now I am getting an error code: 0x0



Thanks!










share|improve this question




















  • 2





    You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

    – amn
    Nov 24 '18 at 22:28











  • @amn If you post that as an answer I will accept it.

    – Kevin192291
    Nov 25 '18 at 4:31














1












1








1








I am trying to parse a .GIF in Typescript. What I really want is to extract the frames, but that if a bit much right now.
I am right now trying to adapt the script from:
http://slbkbs.org/jsgif/ to work in typescript.
Here is my attempt: https://stackblitz.com/edit/typescript-syn3av
I feel like I am VERY close, but I am getting an error on line 296 as I parse a block. I am at position 205 in the .GIF file.
If anyone has attempted parsing .GIFs before, I would really appreciate info on how to handle unexpected data.



On line 335 of gif.ts



switch (String.fromCharCode(block.sentinel)) {
case '!':
block.type = 'ext';
parseExt(block);
break;
case ',':
block.type = 'img';
parseImg(block);
break;
case ';':
block.type = 'eof';
handler.eof && handler.eof(block);
break;
default:
throw new Error('Unknown block: 0x' + block.sentinel.toString(16)); // TODO: Pad this with a 0.
}


the result of String.fromCharCode(block.sentinel) seems to be: 0xfd or ý and that is no good.... Am I out of order with how I increment my position?



Update:
I changed the .GIF, and now I am getting an error code: 0x0



Thanks!










share|improve this question
















I am trying to parse a .GIF in Typescript. What I really want is to extract the frames, but that if a bit much right now.
I am right now trying to adapt the script from:
http://slbkbs.org/jsgif/ to work in typescript.
Here is my attempt: https://stackblitz.com/edit/typescript-syn3av
I feel like I am VERY close, but I am getting an error on line 296 as I parse a block. I am at position 205 in the .GIF file.
If anyone has attempted parsing .GIFs before, I would really appreciate info on how to handle unexpected data.



On line 335 of gif.ts



switch (String.fromCharCode(block.sentinel)) {
case '!':
block.type = 'ext';
parseExt(block);
break;
case ',':
block.type = 'img';
parseImg(block);
break;
case ';':
block.type = 'eof';
handler.eof && handler.eof(block);
break;
default:
throw new Error('Unknown block: 0x' + block.sentinel.toString(16)); // TODO: Pad this with a 0.
}


the result of String.fromCharCode(block.sentinel) seems to be: 0xfd or ý and that is no good.... Am I out of order with how I increment my position?



Update:
I changed the .GIF, and now I am getting an error code: 0x0



Thanks!







javascript typescript animated-gif






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 24 '18 at 22:23







Kevin192291

















asked Nov 24 '18 at 21:34









Kevin192291Kevin192291

197215




197215








  • 2





    You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

    – amn
    Nov 24 '18 at 22:28











  • @amn If you post that as an answer I will accept it.

    – Kevin192291
    Nov 25 '18 at 4:31














  • 2





    You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

    – amn
    Nov 24 '18 at 22:28











  • @amn If you post that as an answer I will accept it.

    – Kevin192291
    Nov 25 '18 at 4:31








2




2





You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

– amn
Nov 24 '18 at 22:28





You are testing UTF-8 encoded characters instead of bytes, that's not going to go well. Use TypedArray.

– amn
Nov 24 '18 at 22:28













@amn If you post that as an answer I will accept it.

– Kevin192291
Nov 25 '18 at 4:31





@amn If you post that as an answer I will accept it.

– Kevin192291
Nov 25 '18 at 4:31












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53462564%2ferror-while-parsing-gif-in-typescript-javascript%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53462564%2ferror-while-parsing-gif-in-typescript-javascript%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Wiesbaden

Marschland

Dieringhausen