search
LoginSignup
1

More than 5 years have passed since last update.

posted at

updated at

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

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特有みたい。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1