我在我的終端運行以下命令來運行存儲在以下文件中的代碼:Clojure中製作縮略圖
java -cp clojure.jar clojure.main thumbmaker.clj
凡thumbmaker.clj內容(此代碼已在一些參考地方):
(import javax.imageio.ImageIO)
(import java.awt.image.BufferedImage)
(use '[clojure.java.io :only [as-file input-stream output-stream] :as io])
(defn make-thumbnail-generic [input new-filename width]
(let [img (javax.imageio.ImageIO/read input)
imgtype (java.awt.image.BufferedImage/TYPE_INT_ARGB)
width (min (.getWidth img) width)
height (* (/ width (.getWidth img)) (.getHeight img))
simg (java.awt.image.BufferedImage. width height imgtype)
g (.createGraphics simg)]
(.drawImage g img 0 0 width height nil)
(.dispose g)
(defn make-thumbnail-from-file [filename new-filename width]
(make-thumbnail-generic filename new-filename width))
(make-thumbnail-from-file "thumb.png" "test.png" 100)
而且我發現了以下錯誤:
Exception in thread "main" java.lang.IllegalArgumentException: No matching method found: read (thumbmaker.clj:0)
我已經檢查了在REPL中獨立導入和使用語句,它們似乎被接受得很好。
我檢查了ImageIO的Java引用,並且讀取函數在那裏。
我已經通過Java-Interop writeup,這似乎是非常多的標準方式,所以我無法弄清楚爲什麼閱讀不起作用。