Re: findin colors in gif files

From: Date: Wed, 05 Jun 2002 10:21:51 +0000
Subject: Re: findin colors in gif files
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-100672@lists.php.net to get a copy of this message
Hi I think you have to use fread to load the binary file, here is a quick function that will do what you want. It a little bit safer than just blindly changing hex values in the file, it only checks the colour table. Tom <?php function change($file,$r,$g,$b,$r2,$g2,$b2){
        $found = 0;
        if($fd = fopen($file, "r")):
                $f = fread($fd, filesize ($file));
                fclose ($fd);
                $gif = unpack("C*",$f);
                $flag = $gif[11];       //flag position
                if($flag & 128): //we have a global table
                        $colours = pow(2,($flag & 7)+1);        //number of entries in table
                        $x = 14;                //start of global table
                        $y = $x + (3 * $colours);       //3 bytes per colour
                        while($x < $y):
                                if(($gif[$x] == $r)&&($gif[$x+1] == $g) && ($gif[$x+2] == $b)):
                                        echo "found colour  at offset $x <br>";
                                        $gif[$x] = $r2;
                                        $gif[$x+1] = $g2;
                                        $gif[$x+2] = $b2;
                                        $found = 1;
                                endif;
                                $x +=3;
                        endwhile;
                endif;
        endif;
        if($found == 1):
                while(list($key,$val)=each($gif)):
                        $newgif .= pack("C",$val);
                endwhile;
                $fd = fopen("test.gif", "w");
                fwrite($fd,$newgif);
                fclose($fd);
        endif;
} $filename = "vcd_1.gif"; change($filename,0xff,0x33,0x66,0x33,0x45,0xff); ?> <img src="vcd_1.gif" width="259" height="32" alt="" border="0"><br> <img src="test.gif" width="259" height="32" alt="" border="0"> At 05:06 PM 5/06/2002, johannes reichardt wrote:
hi everybody, i am new to this list & php and i have a big question that i would love to be answered ;) i have a small gif file that has a part in #ff3366 colored - so what i thought is to do a mean hack for my website: instead of opening all images in a graphicseditor and change the color manually i could look up for that color (ff3366) in the image files and replace it with something else, unfortunatly i got stuck with this approach pretty soon. here is my problem: if i open the gif file in php (its attached to this mail) and convert it to hex: $filetext1 = implode("",(@file("vcd_1.gif"))); $filetext1 = bin2hex($filetext1); } like this i get a string that looks like hex - but i cant find my ff3366 anymore, did i miss something really obvious? if i look up the gif file with an hexeditor (i use textpad) i can see it - with php its not findable any ideas? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.general (#100672) next »