in reply to gif colour changes
The GIF file format is widely described on the internet. One of the better descriptions is here.
This piece of code tweaks the global colour table (simply reversing the indexes):
#! perl -slw use strict; open GIF, '<:raw', $ARGV[ 0 ] or die $!; my $gif = do{ local $/; <GIF> }; close GIF; ## Extract the colour table my @GCT = unpack '(A3)256', substr $gif, 13, 256 * 3; ## SWap the colours end to end @GCT = reverse @GCT; ## put the colour table back substr( $gif, 13, 256*3 ) = pack '(A3)256', @GCT; open OUT, '>:raw', 'modified.gif' or die $!; print OUT $gif; close OUT;
To do things properly, you would need to check the size of the colour table entry (see byte 10-bits 4..7 of the header) and account for colour tables that use less that 24-bits per entry. Also, you should check bit-0 of the same byte to determine if global or local colour tables are in use, but the code may get you started.
|
|---|