public
Last active

Serve a transparent GIF from NodeJS

  • Download Gist
transparent-gif.js
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Two ways to serve transparent GIF
 
var buf = new Buffer([
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00,
0x80, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x2c,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02,
0x02, 0x44, 0x01, 0x00, 0x3b]);
 
res.send(buf, { 'Content-Type': 'image/gif' }, 200);
 
// --- OR ----
 
var buf = new Buffer(35);
buf.write("R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=", "base64");
res.send(buf, { 'Content-Type': 'image/gif' }, 200);

btw. the smallest transparent gif is actually 35 pixels :)

char EMPTY_GIF[] = {
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00,
0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x44, 0x01, 0x00, 0x3b
};

Thanks - now serves transparent GIF in 35 bytes instead of 43.

and these 35 bytes actually represent 1x1 white pixel GIF, not transparent.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.