2017-05-04 2 views
1

Ich schreibe ein Bild-Upload-System mit Clojure. Ich verwende eine Java-Bibliothek javadoc, um ein Thumbnail-Bild zu erstellen.Java-Bibliothek in Clojure verwenden

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

Mein Code ändert sich sowohl thumb var und image-jpg var, aber ich möchte zwei getrennte Bilder haben (eines mit normaler Größe und Daumen). Wie erstelle ich eine Kopie von image-jpg, um seine Größe zu ändern?

Antwort

0

Sie könnten einfach versuchen, die gleiche Operation erneut auf der gleichen tatsächlichen Datei durchzuführen. Und erstellen Sie eine Funktion, die Sie aufrufen zweimal:

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

Ein anderer Weg image zu tiefe Kopie wäre. Siehe How do you make a deep copy of an object in Java? und mache das gleiche in Clojure.