2017-05-04 65 views
1

我正在使用Clojure编写一个图像上传系统。我使用Java库javadoc制作缩略图。在Clojure中使用Java库

(defn upload-file [file] 
    (let [file-name (file :filename) 
     actual-file (file :tempfile) 
     image (Thumbnails/fromFiles (java.util.ArrayList. [actual-file])) 
     image-jpg (.outputFormat image "jpg") 
     thumb (.forceSize image-jpg 250 150)] 
     ... 

我的代码更改thumb var和image-jpg变种,但我想有两个独立的图像(一个正常大小和拇指)。如何制作image-jpg的副本来更改其大小?

回答

0

您可以尝试在相同的实际文件上再次执行相同的操作。并创建一个函数调用两次:

(defn make-thumb [width height file] 
    (let [image (Thumbnails/fromFiles (java.util.ArrayList. [file])) 
     image-jpg (.outputFormat image "jpg")] 
    (.forceSize image-jpg width height))) 

另一种方法是深拷贝image。请参阅How do you make a deep copy of an object in Java?并在Clojure中做同样的事情。