A fini de pouvoir résoudre ceci en combinant le commentaire sur votre question avec ma réponse antérieure de here. Modification mineure au code le laisser fonctionner avec des images qui ne sont pas des images.
Je ne l'ai pas changé pour recurse aux sous-répertoires. Serait assez facile à faire.
(defn files-in-dir [dir]
(filter #(not (.isDirectory %))
(.listFiles (java.io.File. dir))))
(defn figure-out-height-width
[files]
(remove nil?
(map (fn [file]
(with-open [r (java.io.FileInputStream. file)]
(if-let [img (javax.imageio.ImageIO/read r)]
[file (.getWidth img) (.getHeight img)])))
files)))
user> (pprint (files-in-dir "/home/jmccrary/Downloads/"))
(#<File /home/jmccrary/Downloads/Girl_Talk_-_All_Day_(IA123)_mp3s.zip>
#<File /home/jmccrary/Downloads/CSS3-for-Web-Designers.zip>
#<File /home/jmccrary/Downloads/manual.pdf>
#<File /home/jmccrary/Downloads/test.jpeg>
#<File /home/jmccrary/Downloads/nautilus-dropbox_0.6.7_amd64.deb>
#<File /home/jmccrary/Downloads/rubygems-1.3.7.tgz>
#<File /home/jmccrary/Downloads/HTML5-FOR-WEB-DESIGNERS.zip>
#<File /home/jmccrary/Downloads/bcompare-3.1.11.12238.tar.gz>
#<File /home/jmccrary/Downloads/shared_ptr_example.cpp>)
nil
user> (figure-out-height-width (files-in-dir "/home/jmccrary/Downloads"))
([#<File /home/jmccrary/Downloads/test.jpeg> 32 32])
Après avoir réfléchi à ce sujet pour un peu il se sent sale de combiner le contrôle d'un fichier étant une image avec le tirant sur la largeur et la hauteur. Vous pouvez également définir une fonction qui effectue ce filtrage séparément et vous donne une suite d'images.
(defn filter-images
[files]
(reduce (fn [res file]
(if-let [img (javax.imageio.ImageIO/read file)]
(conj res img)
res))
[]
files))
user> (filter-images (files-in-dir "/home/jmccrary/Downloads"))
[#<BufferedImage [email protected]: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_Color\
[email protected] transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 32 height = 32 #numDataElements 3 \
dataOff[0] = 2>
]
Voici un lien utile: http://webcache.googleusercontent.com/search?q=cache:2Gkd-GcGI5AJ:forums.sun.com/thread.jspa%3FthreadID%3D5398376 + java + déterminer + si + un + fichier + est + an + image & cd = 1 & hl = sv & ct = clnk & gl = se & client = firefox-a –