イメージのHTML IMGタグを生成し、適切な内容を提供する必要があります。一つの方法は、直接data uriソースとしてWebページでイメージソースを置くことです:
#lang web-server/insta
(require pict
net/base64
file/convertible)
;; pict->data-uri : Pict -> String
(define (pict->data-uri pict)
(format "data:image/png;base64,~a"
(base64-encode (convert pict 'png-bytes))))
;; start : Request -> Response
(define (start request)
(send/suspend/dispatch
(lambda (make-url)
(response/xexpr
`(html
(body
(p "hello, here's a circle:")
(img ([src ,(pict->data-uri (circle 10))]))))))))
もう一つの方法は、画像ソースにその応答として画像を送信するURLを作ることです。
#lang web-server/insta
(require pict
file/convertible)
;; pict-response : Pict -> Response
(define (pict-response pict)
(response/full 200 #"Ok"
(current-seconds) #"image/png"
(list)
(list (convert pict 'png-bytes))))
;; start : Request -> Response
(define (start request)
(send/suspend/dispatch
(lambda (make-url)
(response/xexpr
`(html
(body
(p "hello, here's a circle:")
(img ([src ,(make-url
(lambda (req)
(pict-response (circle 10))))]))))))))
あなたの答えをありがとうが、私は画像を描画するために複数の引数の手順を使用できますか? @Dimitryの 'pict'ライブラリの' circle'関数が '2htdp/image'のものと異なっています。(円20の"ソリッド ""ブルー ") – Dimitry
@ Dimitry 'pict'ライブラリを使った実線の青い円のコードは'(colorize(disk 20) "blue") 'です。あるいは、 'pict'のrequire行を' 2hdp/image'に置き換えることもできます。これは、そのライブラリのイメージもまたPNGバイトに変換できるからです。 'pict'ライブラリ関数は' 2htdp/image'イメージを引数として受け入れることができます(ただし、私が知る限り、他の方法では使用できません)ので、2つのライブラリを一緒に使用することもできます。名前の競合を処理するには、 'prefix-in'のようなものを使う必要があります。 –
説明ありがとうございます。私は修正を加え、それはうまくいく – Dimitry