2011-08-07 11 views
4

Clojureで単純なBufferedImageを生成してpngファイルとして保存するにはどうすればよいですか?clojureで.png-imageを生成して保存する

+2

あなたは[rinzelight](https://github.com/Serabe/rinzelight)を見て、私はClojureのあちこちに書いている画像ライブラリを取ることができます。 – Serabe

+0

ああ、素晴らしい!あなたは私の仕事の時間を節約しました! – claj

+0

それを聞いてうれしい!私がそれに加えることができるものがあれば教えてください。 – Serabe

答えて

9

私は簡単にこのように、このように何かをやった:

(def bi (BufferedImage. 16 16 BufferedImage/TYPE_INT_ARGB)) 
(def g (.createGraphics bi)) 
;; use g 
(.drawLine g 0 0 10 10) 
(.drawLine g 0 15 15 0) 
;; save: 
(ImageIO/write bi "png" (File. "test.png")) 

BufferedImageGraphics2Dコンテキストgを提供しており、私たちは、保存を行うためにImageIOを使用しています。鉱山のプロジェクトから

例:

(ns minemap.graphics 
    (require minemap.core) 
    (import java.io.File) 
    (import java.awt.Color) 
    (import java.awt.image.BufferedImage) 
    (import javax.imageio.ImageIO)) 

(defn draw-png 
    "Take width, height, and the map of mines. Save to a file. 
    Supposed to take a generate-random-map{,-perc} mapping." 
    [width height minemap file] 
    (let [block 5 ;block size 
     bi (BufferedImage. (* block width) (* block height) BufferedImage/TYPE_INT_ARGB) 
     g (.createGraphics bi)] 
    (do 
     (.setColor g (*colors* :background)) 
     (.fillRect g 0 0 (* block width) (* block height)) 
     (doseq [[[x y] high] minemap] 
     (.setColor g (*colors* high)) 
     (.fillRect g (* block x) (* block y) block block)) 
     (ImageIO/write bi "png" (File. file))))) 
+0

ありがとうございました!非常にエレガント! – claj

関連する問題