Hmm, I made it a little further. Now I am trying to write a thumbnail to disk. I have copied the code from StackOverflow. I am using this function:
(defn make-thumbnail [filename path-to-new-file-including-file-name width] {:pre [(= (type filename) java.lang.String) (fs/exists? filename) (= (type path-to-new-file-including-file-name) java.lang.String) (number? width)]} (println " we will write thumbnails to here: " (str path-to-new-file-including-file-name)) (let [ext (fs/extension filename) img (get-file-as-image filename) 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) (pp/pprint simg) (javax.imageio.ImageIO/write simg ext (io/as-file path-to-new-file-including-file-name)))) This line: (println " we will write thumbnails to here: " (str path-to-new-file-including-file-name)) shows me this, which is the path I want: we will write thumbnails to here: /Users/larry/tma_files/processed/b5838394-a86c-411f-b556-94b30c26a553IMG_1175_180.JPG This line: (pp/pprint simg) gives me: #<BufferedImage BufferedImage@7ac84a5b: type = 2 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000 IntegerInterleavedRaster: width = 125 height = 93 #Bands = 4 xOff = 0 yOff = 0 dataOffset[0] 0> I do not get any errors or exceptions, but nothing gets written to disk. Can anyone suggest why? If I look here: http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#write(java.awt.image.RenderedImage, java.lang.String, java.io.File) Writes an image using an arbitrary ImageWriter that supports the given format to a File. If there is already a Filepresent, its contents are discarded. Parameters:im - a RenderedImage to be written.formatName - a String containg the informal name of the format.output - a File to be written to.Returns: false if no appropriate writer is found. I am unsure what "false if no appropriate writer is found" means. I have added code to be sure that only jpeg, gif and png files get to this function. Any suggestions why nothing gets written to disk? On Thursday, February 27, 2014 4:09:10 PM UTC-5, larry google groups wrote: > > > Ah, I see what happened. There was a Microsoft Word document in my folder > of images. It was causing the problems. I had no error handling for > non-images. > > > > On Thursday, February 27, 2014 3:52:09 PM UTC-5, Aaron Cohen wrote: >> >> On Thu, Feb 27, 2014 at 3:44 PM, larry google groups < >> lawrenc...@gmail.com> wrote: >> >>> I tried this too: >>> >>> (ns tma-make-thumbnails.make-images >>> (:import >>> (java.util UUID) >>> (javax.imageio ImageIO) >>> (java.awt.image BufferedImage) >>> (javax.imageio ImageReader)) >>> >>> >>> >>> (defn get-file-as-image [filename] >>> {:pre [(= (type filename) java.lang.String) >>> (fs/exists? filename) >>> (fs/file? (io/as-file filename))] >>> :post [(do (pp/pprint %) true) >>> (= (type %) java.awt.image.BufferedImage)]} >>> (.read ImageIO (io/as-file filename))) >>> >> >> This is trying to invoke the "read" method of the Class instance >> representing "javax.imageio.ImageIO". This is surely not what you want. >> >> >>> but that only gives me: >>> >>> Exception in thread "Thread-1" java.lang.IllegalArgumentException: No >>> matching method found: read for class java.lang.Class >>> >>> I don't get why ImageIO is java.lang.Class after I imported it. >>> >>> >>> >>> >>> >>> On Thursday, February 27, 2014 3:09:53 PM UTC-5, larry google groups >>> wrote: >>>> >>>> I have no background with Java so I tend to suffer pain when dealing >>>> with it. I am trying to create a thumbnail for an image, but my code dies >>>> on the :post assertion of this function: >>>> >>>> (defn get-file-as-image [filename] >>>> {:pre [(= (type filename) java.lang.String) >>>> (fs/exists? filename) >>>> (fs/file? (io/as-file filename))] >>>> :post [(do (pp/pprint %) true) >>>> (= (type %) BufferedImage)]} >>>> (javax.imageio.ImageIO/read (io/as-file filename))) >>>> >>> >> >> This is the correct syntax for invoking a static method of a class. I'm >> not sure why it's not working for you. What kind of file are you trying to >> load? >> >> > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.