我的問題與此非常相似,但我在磁盤上有數千張影像,我想快速讀取它們的寬度和高度(以像素為單位),而無需將每個檔案加載到記憶體中。
在我的 Linux 機器上,我可以為每個檔案做這樣的事情:
path_to_file <- 'img/13600061.jpg'
system(sprintf("file %s", path_to_file), intern = TRUE)
但是filejpg、jpeg 和 png 檔案的輸出可能不同,然后我需要根據檔案以不同的方式捕獲像素資訊。我想知道是否已經有一個通用的快速解決方案。
uj5u.com熱心網友回復:
我認為exiftool這里很合適。它可以在所有平臺上運行,非常可控,而且至關重要的是,它可以自行遞回,因此不會產生每個檔案啟動一次的開銷。
作為粗略的第一次嘗試,如果處理 PNG 和 JPEG 并從當前目錄開始向下遞回,您會想要這樣的東西,即 .
exiftool -csv -ImageHeight -ImageWidth -r -ext jpg -ext jpeg -ext png .
樣本輸出
black.png,80,80
blue.png,80,80
c.jpg,1,1
deskew/skew40.png,800,800
deskew/gradient.png,800,800
-q如果您正在決議輸出,您可能需要添加以排除摘要。
作為粗略的指南,上述命令在我的 Mac 上包含 10,000 個影像的目錄上運行 9 秒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350341.html
上一篇:C從文本檔案中讀取數字
