如何在JVM上确定任意格式(JPEG,PNG等)图像文件的尺寸?

Tim*_*her 3 jvm image clojure

我想通过一个目录来挑选所有图像,然后根据它们的尺寸做一些事情.我可以使用哪些库来执行此操作?

我在Clojure工作,但JVM上的任何东西都是公平的游戏.

提前致谢!

Jak*_*ary 8

(with-open [r (java.io.FileInputStream. "test.jpeg")]
  (let [image (javax.imageio.ImageIO/read r)]
    [(.getWidth image) (.getHeight image)]))
Run Code Online (Sandbox Code Playgroud)

您可以使用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])
Run Code Online (Sandbox Code Playgroud)