birdWeb Slideshow 作成スクリプト

Web Slideshow 作成スクリプト

デジカメで子供の写真をたくさん撮っていると、それをジジババ (つまり僕らの両親) などに見せたくなることがあります。そんなときにサクサク Web Slideshow が作れるツールはないかしら…と思っていました。zphoto なども有名だしとても良いツールだと思うのですが、ちょっと違う気がしたんですよね。

これまでは、自作のサムネイル化するスクリプト、回転するスクリプト、それらをまとめ一枚のページにするスクリプトなどを駆使して写真公開ページを作っていたんですが、今日ちょっとそれを1時間ハックでバージョンアップしてみました。自分で使うことしか考えていないので超テキトーなスクリプトなんですが、何かの役に立つかもしれないので公開しちゃいます。基本的には linux 用ですが、必要なコマンドを用意すれば大抵の Unix 互換 OS で動作すると思う。

Web Slideshow 作成までのステップを簡単に説明してみます。僕は自宅に Web サーバがあるのでローカル作業ですべて出来てしまいますが、出来上がったディレクトリごと Web サーバにアップロードすればそのまま動作するはず。

  1. まずスライドショーをおきたいディレクトリを作り、その下に「images」、さらにその下に「src」というディレクトリを作ります。スライドショーディレクトリを「sample_ss」とすれば、「sample_ss/images」「sample_ss/images/src」という3階層のディレクトリができた事になります。
  2. 次に、src ディレクトリ内にスライドショーにしたい元のデジカメ写真ファイルをコピーします。ウチのジジババは気に入った写真をダウンロードして自分でプリントして楽しみたい人たちなので、もっとも劣化の少ないオリジナルファイルへのリンクが必要なのですね。
  3. サムネイルを作成します。「sample_ss/images」ディレクトリでこの「convert.sh」を実行すると、自動的に長辺が 560 ドットのサムネイルを作成します。ls や basename コマンドは大抵入っていると思うけど、画像の縮小に使っている convert コマンドの含まれる imagemagick は入っていなければインストールしておきましょう。
  4. 画像を回転します。縦位置で撮った写真のサムネイルはやっぱり縦表示にしたいものです。僕が使っている EOS Kiss Digital N は縦横センサーを持っていて、縦位置で撮った写真にはちゃんと Orientation としてその情報が含まれています。そこでこの「autotran.sh」スクリプトを使って回転します。このスクリプトは内部で exif (Debian では exif パッケージに収録)、jpegtran、jpegexiforient (両方 libjpeg-progs パッケージに収録) といったコマンドを使っています。このスクリプト自体も、libjpeg-progs に入っている exifautotran というスクリプトをほとんどコピーして使わせてもらっています。実行方法は、sample_ss/images ディレクトリで「autotran.sh *.JPG」などとします。
  5. 最後に、「create_html.sh」を実行してスライドショーページを作成します。sample_ss/images ディレクトリで「create_html.sh >../index.html」という感じで実行します。create_html.sh スクリプト内部でタイトル等を設定できますのでその辺は適当に設定します。またこのスクリプトの実行にも exif コマンドが必要です。

てな感じで出来上がったページはこんな感じ。Prev、Next で写真を送れ、写真自体をクリックすればソースファイルが表示される他、auto をクリックすると5秒毎に自動的に写真を送っていくスライドショーモードになります (止めたい時は stop をクリック)。超シンプルだけど、まぁプライベートで使うだけならこんなもんでいいか、と。