[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