I have some code that writes individual images to pdfs (see below). If there's a lot of "texture" in the images, these files can be very large indeed.
I assume that by default the image is encoded as a kind of embedded png. I would like to be able to change the compression -- e.g. specify jpeg. My currently workaround is to save from Racket as a png, and then convert externally via ImageMagick: first to jpeg, then to pdf. (How) can I achieve the same result directly from Racket? Many thanks Dan ---- #lang racket (require racket/draw (only-in 2htdp/image save-image image-width image-height scale)) (define (image->bitmap image) (let* ([width (image-width image)] [height (image-height image)] [bm (make-bitmap width height)] [dc (send bm make-dc)]) (send dc clear) (send image draw dc 0 0 0 0 width height 0 0 #f) bm)) (define (image->pdf image output-file [mag 1.0]) (define dc (new pdf-dc% [ interactive #f ] [ use-paper-bbox #f ] [ width (* 0.8 mag (image-width image))] ; Default scale is 0.8 0.8 [ height (* 0.8 mag (image-height image))] [ output output-file ])) (send* dc (scale mag mag) (start-doc "useless string") (start-page)) (send dc draw-bitmap (image->bitmap image) 0 0) (send* dc (end-page) (end-doc))) (module+ test (require (only-in 2htdp/image circle text square overlay above)) (define im (overlay (above (circle 50 'solid 'red) (text "This is a red circle" 12 'black)) (square 150 'solid 'lightblue))) (image->pdf im "image-test.pdf") (save-image im "image-test.png"))
____________________ Racket Users list: http://lists.racket-lang.org/users