在clojure中生成并保存.png图像

在clojure中生成并保存.png图像,clojure,image-manipulation,Clojure,Image Manipulation,如何生成一个简单的BuffereImage并将其保存为Clojure中的png文件?我以这种方式做了一些事情,简单地说如下: (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.

如何生成一个简单的BuffereImage并将其保存为Clojure中的png文件?

我以这种方式做了一些事情,简单地说如下:

(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"))
BufferedImage
Graphics2D
context
g
提供服务,我们使用它进行保存

来自矿山项目的示例:

(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)))))

你可以看看,一个我为Clojure写的图像库。啊,太棒了!你帮我省了几个小时的工作!很高兴听到这个消息!如果有什么我可以补充的,请告诉我。