You are here: How to grayscale a gif using bit-swapping « PHP Programming Language « IT news, forums, messages
How to grayscale a gif using bit-swapping

Posted by Lars Erik Bryld on 03/21/07 18:27

Hello group

I am trying to convert a (supposedly) working python script into php.
The script reads a colour gif-picture and produces a greyscale copy of
it.

The method is to first copy the gif header, then establish the size of
the colour palette, then do a simple averaging of each colour byte
triplet into a grayscale equivalent, and finally to copy the remaining
part of the gif file unaltered over into the new file. I believe, it's
the last procedure that goes wrong, partly because of my inability to
understand the file manipulation issues.


The original Python script:

header = f.read(13)
o.write(header)
for i in range (1 << (( ord(header)[10]) & 7) + 1)):
gray = (ord(f.read(1) + ord(f.read(1) + ord(f.read(1)))/3
o.write(3*chr(gray))
o.write(f.read())


My feeble and as yet non-functional PHP translation:

$fi = fopen("in.gif", 'r');
$fo = fopen("out.gif", 'w');

$header = fread($fi, 13);
fwrite($fo, $header);

$l = (1 << (ord($header[10]) & 7) + 1);

for ($i = 0; $i <= $l; $i++) {
$gray = (ord(fread($fi, 1)) + ord(fread($fi, 1)) + ord(fread($fi,
1)))/3;
fwrite($fo, 3*chr($gray));
}

$rest = fread($fi, 99999999999999999999);
fwrite($fo, $rest);

fclose($fi);
fclose($fo);




I hope some kind spirit will point out any blatant errors in my use of
the functions above. I only get small 2-300 byte long output files
regardless of input file size.


--
Regards
Lars Erik Bryld

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация