File: image.rkt

package info (click to toggle)
racket-mode 20181003git0-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 732 kB
  • sloc: lisp: 7,641; makefile: 56
file content (26 lines) | stat: -rw-r--r-- 713 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#lang racket/base

;;; Portions Copyright (C) 2012 Jose Antonio Ortega Ruiz.

(require file/convertible
         racket/file
         racket/vector)

(provide convert-image?
         convert-image)

;; save-temporary-image : bytes? -> string?
;;
;; Write bytes to a temporary file and return "#<Image: filename>".
(define (save-temporary-image png-bytes)
  (define filename (make-temporary-file "racket-image-~a.png"))
  (with-output-to-file filename #:exists 'truncate
    (λ () (display png-bytes)))
  (format "#<Image: ~a>" filename))

(define (convert-image? v)
  (convertible? v))

(define (convert-image v)
  (cond [(and (convertible? v) (convert v 'png-bytes)) => save-temporary-image]
        [else v]))