2020/11/30
[NodeJS]特定のフォルダにある画像ファイルのサイズを一覧表示できるようにしました
概要
nodejsを使って、特定のディレクトリにある全てのファイルを抽出して、幅と高さを一覧でコンソールに出力するようにしました
画像内の物体検出を最近やる機会があるのですが、
画像内の物体検出で利用しているOpen Image Datasetのファイルのサイズを一覧で表示したかったのが理由です。
実装内容
- probe-image-sizeを利用させていただきました
npm install probe-image-size
で事前にインストールしておきます
ls_img_details.js
という名前で保存しておきます。jpg
だけをフィルタしていますが、うまくフィルタすれば、pngなども対応できるはずです
const fs = require('fs');
const path = require('path');
const probe = require('probe-image-size');
async function listFiles(dirpath, callback) {
callback("filename\twidth\theight")
try {
const files = fs.readdirSync(dirpath);
for (const filename of files) {
if (!filename.match(/\.jpe?g/)) continue;
const filepath = path.join(dirpath, filename);
try {
const metadata = await probe(fs.createReadStream(filepath));
const result = [filename, metadata.width, metadata.height].join('\t')
callback(result)
} catch (e) {
console.log(`error while get dimensions of ${filename}`);
console.log(e);
}
}
} catch (e) {
callback({err: e});
}
}
(async (dirpath, callback) => {
await listFiles(dirpath, callback);
})(process.argv[2], console.log);
利用方法
$ node ls_img_details.js /path/to/target
filename width height
0001eeaf4aed83f9.jpg 1024 447
0004886b7d043cfd.jpg 1024 1024
000595fe6fee6369.jpg 1024 681
00075905539074f2.jpg 1024 914
... 以下略 ...
以上です。
結構便利でした。