やりたかったこと
Lambda上のNode.jsでurlから画像をダウンロードして、リサイズしてS3に保存。
(よくあるLambda活用術?)
画像ダウンロードに使ったライブラリは定番のrequest
バージョンは2.81.0
画像リサイズはgmを試しました。(試行錯誤したため)
ハマった点
以下のコードでなぜか、画像リサイズに失敗する。
そもそもリサイズ抜きで画像を保存してもファイルが開けない。responseの中身をログで吐くと、ちゃんとbodyやらcontent-typeは入っている。
ResizeImage.js
//〜〜(略)〜〜
request(event.imageurl, function (error, response, body) {
//**** 画像をリサイズ & 保存する処理(略) ****
}
解決法
encodingにnullを指定したら治りました。
ResizeImage.js
//〜〜(略)〜〜
request({method: 'GET', url:event.imageurl, encoding: null}, function (error, response, body) {
//**** 画像をリサイズ & 保存する処理(略) ****
}
responseをコンソール出力したときの文字化けも同時に治りました。
まさか、encodeingを指定しない場合と、nullを指定する場合で違う動きをするとは思いませんでした。
以上 、恐ろしいので、忘れないためのメモでした。