[cl-gd-devel] Image to array of bytes

Edi Weitz edi at agharta.de
Wed May 30 15:10:40 UTC 2007


On Wed, 30 May 2007 10:42:40 -0400, "Andrei Stebakov" <lispercat at gmail.com> wrote:

> Instead of saving an image into a file using write-image-to-file I
> was trying to provide a hunchentoot handler which outputs an array
> of bytes (just like in the hunchentoot test.lisp image-ram-page
> example). For this I thought write-jpeg-to-stream would be the best
> candidate so I did following:
>
>   (let ((s (make-string-output-stream :element-type '(unsigned-byte 8))))
>         (write-jpeg-to-stream s :image bg-image)
>         (let ((image-data (make-array (image-size bg-image) :element-type
> '(unsigned-byte 8))))
>           (read-sequence image-data s)
>           image-data)))))))
>
> For which the SBCL complains:
> #<SB-IMPL::STRING-OUTPUT-STREAM {CE6D171}> is not a binary output stream.
>
> I am wondering if I am doing the right thing and choosing the right
> function for the task. I also tried to create a stream with
> flexi-stream:make-in-memory-output-stream without any success.

MAKE-STRING-OUTPUT-STREAM can't work because it's a /string/ stream,
as the name says.  The FLEXI-STREAMS approach should work, though.  If
it doesn't, show us your code.

I wonder why you're doing all this, though.  Why don't you write
directly to the Hunchentoot stream?  (You know about SEND-HEADERS,
don't you?)

Cheers,
Edi.



More information about the Cl-gd-devel mailing list