Edited at

画像を偶数のサイズにするnodeスクリプト(windows編)

More than 3 years have passed since last update.

AdobeのCCのアセット機能で画像のスライスは格段に楽になった。

その際生成される奇数の画像を毎回photoshopで、修正していたのだが、

それ用のスクリプトをkatapadさんが用意してくれてました。

果てしなく便利!(要imagemagic)

http://qiita.com/katapad/items/261b277f1abe20018fa1

https://github.com/katapad/evenizer

ですが、windowsユーザーの僕はzshが入っておらず、

1ファイルは処理できるのだがワイルドカードが使用できなかった。

zshをwindowsに入れるためにはCygwin入れたり諸々設定をしなければならず非常にめんどくさい。

http://futurismo.biz/archives/1363

なので、globを使って稚拙なnodeスクリプトを書きました。

外部からkatapadさんの外部コマンドを読み込む。


even.js


var glob = require("glob")
var exec = require('child_process').exec;
var options = {timeout: 1000};

var cmd = "./**/*.{jpg,png,gif}";
glob(cmd, options, function (er, files) {
for (var i =0; files.length > i; i++) {
console.log(files[i]);
exec("evenizer -i "+ files[i]);
};
});


拡張子を選択したい場合はこっちのほうがいいかもしれません。

コマンドライン上で、引数にその拡張子だけを入力すると特定の拡張子だけを処理します。


コマンドライン

node x.js png



even2.js


var glob = require("glob")
var exec = require('child_process').exec;
var options = {timeout: 1000};

// ここに拡張子が入る
var extension = process.argv[2]

var cmd = "./**/*." + extension ;

glob(cmd, options, function (er, files) {
for (var i =0; files.length > i; i++) {
console.log(files[i]);
exec("evenizer -i "+ files[i]);
};
});


gif.jpg

奇数のファイルを1px広げてくれるのだが、

気を付けないといけないのが、jpgファイルの場合、黒のふちが出てしまった。

同じファイルをpngや、gifに変換した時は大丈夫だったので、jpg特有みたい。

こういう作業を自動化してくれるスクリプトは本当にありがたいです。

ありがとうございました。