Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8892

[AWS][nodejs] S3にある JPEG ファイルの EXIF 情報を削除して書き戻す

$
0
0

必要な npm パッケージは aws-sdk, file-type, piexif

S3.getObjectでデータ取得して、file-typeで JPEG 画像かチェックして、piexifで EXIF を削除して、S3.putObjectで書き戻す感じです。

constAWS=require('aws-sdk');constFyleType=require('file-type');constpiexif=require('piexif');constremoveExif=(region,bucket,key)=>{constS3=newAWS.S3({region:region});returnPromise.resolve({Bucket:bucket,Key:key}).then(params=>S3.getObject(params).promise()).then(data=>newPromise(async(resolve,reject)=>{// mime type のチェックconstfileInfo=awaitFyleType.fromBuffer(data.Body);if(fileInfo.mime==='image/jpeg'){data.ContentType=fileInfo.mime;resolve(data);}else{reject(Error("It's not jpeg format."));}})).then(data=>newPromise((resolve,reject)=>{// EXIF 情報の削除try{constnewBody=piexif.remove(data.Body.toString('binary'));resolve({Bucket:bucket,Key:key,ContentType:data.ContentType,Body:Buffer.from(newBody,'binary')});}catch(err){reject(err);}})).then(params=>S3.putObject(params).promise()).then(data=>Promise.resolve(data)).catch(err=>Promise.reject(err));}

Lambda ファンクションとして動くようにして、PUT のタイミングで EXIF 情報を削除するとか、Lambda@Edge で動くようにして EXIF 情報を秘匿するとかのサンプルにしてください。

Lambda@Edge で画像ファイルに対するレスポンスを編集するためのサンプルとしては HM さんのも参考になるかも
https://github.com/humanmade/tachyon


Viewing all articles
Browse latest Browse all 8892

Trending Articles