18 lines
727 B
Text
18 lines
727 B
Text
#ESCAPECHARS ON
|
|
|
|
DIM colored = ".\\Lena.ppm", grayscale = ".\\LenaGry.ppm"
|
|
DIM head, tail, r, g, b, l, ptr, blobsize
|
|
|
|
FILEGET(FILEOPEN(colored, BINARY), FILELEN(colored)): FILECLOSE(FILEOPEN) ' Load buffer
|
|
blobsize = INSTR(FILEGET, "\n255\n") + 4 ' Get sizeof PPM header
|
|
head = @FILEGET + blobsize: tail = @FILEGET + FILELEN ' Set loop bounds
|
|
|
|
FOR ptr = head TO tail STEP 3 ' Transform color triplets
|
|
r = PEEK(ptr + 0, 1) ' Read colors stored in RGB order
|
|
g = PEEK(ptr + 1, 1)
|
|
b = PEEK(ptr + 2, 1)
|
|
l = 0.2126 * r + 0.7152 * g + 0.0722 * b ' Derive luminance
|
|
POKE(ptr + 0, CHR(l))(ptr + 1, CHR)(ptr + 2, CHR) ' Write grayscale
|
|
NEXT
|
|
|
|
FILEPUT(FILEOPEN(grayscale, BINARY_NEW), FILEGET): FILECLOSE(FILEOPEN) ' Save buffer
|