28 lines
734 B
Text
28 lines
734 B
Text
function read_ppm(sequence filename)
|
|
sequence image, line
|
|
integer dimx, dimy, maxcolor
|
|
atom fn = open(filename, "rb")
|
|
if fn<0 then
|
|
return -1 -- unable to open
|
|
end if
|
|
line = gets(fn)
|
|
if line!="P6\n" then
|
|
return -1 -- only ppm6 files are supported
|
|
end if
|
|
line = gets(fn)
|
|
{{dimx,dimy}} = scanf(line,"%d %d%s")
|
|
line = gets(fn)
|
|
{{maxcolor}} = scanf(line,"%d%s")
|
|
image = repeat(repeat(0,dimy),dimx)
|
|
for y=1 to dimy do
|
|
for x=1 to dimx do
|
|
image[x][y] = getc(fn)*#10000 + getc(fn)*#100 + getc(fn)
|
|
end for
|
|
end for
|
|
close(fn)
|
|
return image
|
|
end function
|
|
|
|
sequence img = read_ppm("Lena.ppm")
|
|
img = to_gray(img)
|
|
write_ppm("LenaGray.ppm",img)
|