proc make_color_dot color { return \x47\x49\x46\x38\x37\x61\x01\x00\x01\x00\x91\x00$color\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x00 # Hmmm. In February 2003, CL couldn't get the sequence # above to work as expected, and resorted instead to set BEFORE "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00" set AFTER="\x00\x00\x00\x21\xf9\x04\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x00" return $BEFORE$color$AFTER # Presumably someone with enough motivation can track # these back to the pertinent standards. } proc write_color_dot {color filename} { set fp [open $filename w] puts -nonewline $fp [make_color_dot $color] close $fp } write_color_dot \x00\x00\xff\x00 /tmp/gif/green.gif
MGS I've used this to write a 1x1 transparent gif image:
set data "GIF89a\u0001\u0000\u0001\u0000\u00A1\u0001\u0000\u0000\u0000\u0000\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u0021\u00F9\u0004\u0001\u000A\u0000\u0001\u0000\u002C\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0002\u0002\u004C\u0001\u0000;"Lars H: With \x in place of the \u00's (no need to worry about \x grabbing more than two digits), that would become
set data "GIF89a\x01\x00\x01\x00\xA1\x01\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x21\xF9\x04\x01\x0A\x00\x01\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x4C\x01\x00;"More compact still is to use binary:
set data [binary format a*H*a GIF89a 01000100A10100000000FFFFFFFFFFFFFFFFFF21F904010A0001002C00000000010001000002024C0100 ";"]
[Write up Tk example for simply putting color on PhotoImage.]MG offers:
set img [image create photo -height 1 -width 1] $img write $chosenPath -background $colour -format gif image delete $img ; unset img ;# cleanup
Pythonic expression of same:
template = [71, 73, 70, 56, 57, 97, 1, 0, 1, 0, 128, 0, 0, 255, 255, 255, 0, 0, 0, 33, 249, 4, 1, 0, 0, 0, 0, 44, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 2, 68, 1, 0, 59] if color: rgb = [63, 127, 255] # will be calculated later template[13:16] = rgb template[22] = 0 # remove transparency
Modern Web programming deprecates spacer gif-s in favor of CSS positioning.