(define-library (pnm write) (export image-write) (import (scheme base) (pnm image)) (begin (define (image-write image out) (define (write-string-u8 str) (string-for-each (lambda (c) (write-u8 (char->integer c) out)) str)) (case (image-type image) ((ppm) (write-string-u8 "P6\n")) ((pgm) (write-string-u8 "P5\n")) (else (error "(pnm write) pnm-write: Not supported type" (image-type image)))) (write-string-u8 (number->string (image-width image))) (write-string-u8 "\n") (write-string-u8 (number->string (image-height image))) (write-string-u8 "\n") (case (image-type image) ((pgm ppm) (write-string-u8 (number->string (image-maxval image))) (write-string-u8 "\n"))) (write-bytevector (image-data image) out))))