2013-03-10 6 views
3

Я запускаю следующую команду в моем терминале для запуска кода, хранящегося в следующем файле:Создание эскизов в 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 самостоятельно, и они, кажется, принимаются довольно хорошо.

Я проверил ссылку Java для ImageIO и функция чтения там.

Я прошел через запись Java-Interop, и это похоже на стандартный способ, поэтому я не могу понять, почему чтение не работает.

ответ

Смежные вопросы