AWS Lambda(Node.js)でJimpを使って画像のバリデーションを行う

Node.jsでバリデーションを行うには sharpがよく利用されますが、libvipsで書かれたsharpは環境によってはうまくインストールできないことがあります。

今回、AWS Lambdaで画像のバリデーションを行うにあたりインストール時にハマってしまったこともあり、sharpではなく Pure JavaScriptで書かれた Jimpを利用しました。

利用方法はnpmでパッケージインストールを行い。

npm install jimp

ファイルの冒頭などで読み込んでおきます。

const jimp = require('jimp')

今回のバリデート内容はファイルの実体が画像種であるか、画像のサイズが1000x1000以下かです。
フロントでも同様のバリデートを行っているためこれらのルールから外れる場合は強制的に処理を中断します。

// 画像データのバリデート
const image = await jimp.read(FileData).catch(function (err) {
      console.log('画像データが不正です')
      throw new Error('画像データが不正です')
})
if (image.bitmap.width > 1000 || image.bitmap.height > 1000) {
      console.log('画像サイズが不正です')
      throw new Error('画像サイズが不正です')
}

jimp.readで画像パスは画像バッファを指定することで画像以外の場合はエラーを返します。
また、jimp.read()は画像データを返してくれて、image.bitmap.widthやimage.bitmap.heightで画像のサイズを取得することができますのでサイズの判定に利用します。

スポンサードリンク

«IE11が終わる日 | メイン | AWS SAM のtemplate.yamlをdeploy環境ごとに切り替える»