我想浏览一个目录并挑选出所有图像,然后根据它们的尺寸做一些事情。我可以使用哪些库来执行此操作?
我在 Clojure 工作,但 JVM 上可用的任何东西都是公平的游戏。
提前致谢!
最佳答案
(with-open [r (java.io.FileInputStream. "test.jpeg")]
(let [image (javax.imageio.ImageIO/read r)]
[(.getWidth image) (.getHeight image)]))
您可以使用
with-open
让流自动关闭。这是一个用于遍历目录中一些文件的示例。它假设目录中的所有文件都是图像。示例目录仅包含您的 stackoverflow 头像。
(defn files-in-dir [dir]
(filter #(not (.isDirectory %))
(.listFiles (java.io.File. dir))))
(defn figure-out-height-width
[files]
(map (fn [file]
(with-open [r (java.io.FileInputStream. file)]
(let [img (javax.imageio.ImageIO/read r)]
[file (.getWidth img) (.getHeight img)])))
files))
user>(figure-out-height-width (files-in-dir "/home/jmccrary/Downloads/pics/"))
([#<File /home/jmccrary/Downloads/pics/test.jpeg> 32 32])
关于image - 如何确定 JVM 上任意格式(JPEG、PNG 等)图像文件的尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217896/