|
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]
|