LoginSignup
10
8

More than 5 years have passed since last update.

sharpを使ってExifの回転情報を画像に適用

Posted at

背景

カメラを回転させて撮影した画像データには、EXIFで回転情報が含まれている場合がよくあります。EXIFに沿って表示をしてくれるソフトなら問題ないのですが、imgタグ経由の表示等でEXIFが読み込まれない場合、画像が意図していない方向で表示されます。

たとえば、いま僕が使っているOSX + Safariの環境だと、画像だけを表示した場合には回転情報が適用され、imgタグからの参照では回転が適用されません。

画像アップロードを考える場合には、EXIFを読み込んでサーバ側で画像を回転させ、EXIFを削除しておくのが一番トラブルが少なくなります。

実装

通常はImageMagick等を使うことが多かったのですが、別ソフトのインストールは何かと面倒です。それで調べてみたところ、sharpを使うと簡単に画像回転ができました。
https://github.com/lovell/sharp

rotate()を引数なしで実行することで、EXIFから読み込んだ回転情報が適用されます。

"use strict";
const sharp = require("sharp");
sharp(infile)
    .rotate()
    .toFile(outfile, (err, info) => {

    });

npm install一発で画像が処理できるのは非常に快適です。さらにパフォーマンス的にも有利なようです。自分で確認はしてないですが。

Resizing an image is typically 4x-5x faster than using the quickest ImageMagick and GraphicsMagick settings.

おためしあれ。

10
8
0

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
  3. You can use dark theme
What you can do with signing up
10
8