HDD 内の画像を一覧表示する

HDD 内の画像を一覧表示する

今までに撮った写真を HDD に貯めているが 整理のため、年月毎にフォルダ分けしてるので、全部の写真を一覧表示できない。

そのためにわざわざアプリを入れるのも何だしなぁ…と思い 自分で作ってみることにした。

と言っても難しいことはできないので、 html を作ってブラウザで見ることにする。

<img="2018/0519.和製ウユニと猫島/IMG_8921.JPG" width="120" height="80">
<img="2018/0519.和製ウユニと猫島/IMG_8922.JPG" width="120" height="80">
<img="2018/0519.和製ウユニと猫島/IMG_8923.JPG" width="120" height="80">
<…>

とか、書いておけばいいだろうw

ということで作ったのがこちら。ファイル一覧とか出すのが簡単なので Bash Script で作成。
調子に乗って、アスペクト比を保持したまま縮小してサムネイル表示する仕組みを入れている。

#!/bin/sh

#長辺がこのサイズに収まるように整形する (縦横比を維持)
lbndry=120

cat <<'HEADER'
<html>
  <meta charset="UTF-8">
  <head>
 <title>写真ビューア</title>
  </head>
  <body>
HEADER

find . -type f -iname "*.jpg" | sort | while read photo
do
 reso=`file "${photo}" | perl -pe 's/.*?([0-9]+x[0-9]+).*/\1/g'`
 width=${reso%%x*}
 height=${reso##*x}
 # 
 if [ "${width}" -gt "${height}" ]; then
  height=$((height*lbndry/width))
  width=${lbndry}
 else
  width=$((width*lbndry/height))
  height=${lbndry}
 fi
 name=`basename "${photo}"`
 echo "<a href=\"${photo}\"><img src=\"${photo}\" alt=\"${name}\" border=\"0\" width=\"${width}\" height=\"${height}\"></a>"
done

cat <<'FOOTER'
  </body>
</html>
FOOTER

実際に動かしてみたのだが…。 html 作成にかかった時間は 10分程度。 まあ、 JPEG ファイルが 33000 程度あるからそんなもんか?
※一つずつ写真の解像度調べてるからなぁ…。アスペクト比計算をなくせばもっと速くなるだろうが。

ただ、実際にブラウザで表示させたら 表示が遅すぎて使えないw
やっぱり、ちゃんと サムネイルファイル 作らなきゃダメか…。(´・ω・`)

Author: ozawa

Created: 2018-07-07 土 17:38

Emacs 24.5.1 (Org mode 8.2.10)

Validate

コメント

人気の投稿