diff options
Diffstat (limited to 'pnm/write.scm')
-rw-r--r-- | pnm/write.scm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/pnm/write.scm b/pnm/write.scm new file mode 100644 index 0000000..038bf82 --- /dev/null +++ b/pnm/write.scm @@ -0,0 +1,25 @@ +(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)))) |