動かざることバグの如し

近づきたいよ 君の理想に

NodejsでImageMagickを使うライブラリ「imagickal」

環境

  • Nodejs 12

やりたいこと

nodejsで画像加工をしたい。でもってやはり有名なのはImageMagick

早速一番それっぽいのを見つけたものの最終更新が8年前ww

rsms/node-imagemagick: Imagemagick module for NodeJS — NEW MAINTAINER: @yourdeveloper

This is an abandoned version. Please see @yourdeveloper/node-imagemagick for the currently maintained version

なるほど、メンテナンスは終わったけど誰かがフォークしてくれてるのね、と思って見に行くとこちらも閉店

yourdeveloper/node-imagemagick: Imagemagick module for NodeJS —

Note: This code has been unmaintained for a long time. Please consider using the gm module instead.

結局そのリンク先のaheckmann/gmも3年以上メンテされてないんだよな。。

でnpmでググった結果いいライブラリ見つけたのでメモ

martinj/node-imagickal: node wrapper for ImageMagick commands

インストール

先にImageMagickがインストールされている必要がある

yarn add imagickal

サンプル

とりあえず画像の解像度だけ取得するパターン

const im = require('imagickal');

im.dimensions('yusa_emi.jpg').then(function (dim) {
  console.log(dim.width);
  console.log(dim.height);
});

async / await で書くこともできる

async function run() {
  const dim = await im.dimensions('yusa_emi.jpg');
  console.log(dim.width);
  console.log(dim.height);
}

run();

リサイズ

im.commands()
.resize({ width: 100 })
.quality(90)
.strip()
.exec('yusa_emi.jpg', 'result.jpg').then(function () {
  console.log('done');
});

他にも公式サイトに例がたくさん載ってるのでそっちをみよう