fileApiExifの目的
PCに保存したJpegファイル群を多様な分類や検索をしたいことがあります。多くのアプリケーションがありますが、自分の用途に合致したアプリケーションを自作したいこともあります。
このとき面倒なのが、多くの写真のサイズや緯度経度などを収集してテーブル化する作業です。自分が必要とする属性を得るためには、いろいろな解説書を調べてプログラムにしなければなりません。
私も写真の整理にてこずってきましたが、 fileApiExif としてツール化しました。
fileApiExifの機能
fileApiExifの機能は、FileAPIにより、ローカルファイルからjpegファイルを取り出し、次のような配列を作成するこです。
var 配列名 = [];
配列名[0] = ['150211-111.jpg', 'myPhoto/150211-111.jpg', 56541, 320, 240,
35.9179, 139.6418, '大宮第二公園', '2015-02-11', '2019-09-13'];
配列名[1] = ['161120-0.jpg', 'myPhoto/161120-0.jpg', 75783, 240, 320,
35.9155, 139.6432, '大宮第三公園', '2016-11-20', '2019-09-13'];
配列名[2] = ['180325-71.jpg', 'myPhoto/180325-71.jpg', 73052, 320, 240,
35.9176, 139.635, '大宮第二公園 梅林', '2018-03-25', '2019-09-13'];
属性は次の順序になります。
0 ファイル名
1 URL(このページからの相対URL)
2 サイズ(バイト)
3 横幅(width)(ピクセル)
4 縦幅(height)(ピクセル)
5 緯度(東経:十進度表示)
6 経度(北緯;十進度表示)
7 住所(さいたま市東部のみ)
8 撮影日(yyyy-mm-dd形式)
9 最終更新日(yyyy-mm-dd形式)
ファイル名をキーとする連想配列の形式にすることもできます。
fileApiExifの操作方法
二つのローカルファイルの作成
- PCでの写真ファイルを集めたフォルダを、ここでは myPhoto (名称は任意)とします。
- myPhoto フォルダの内部、あるいはその近辺に、二つのhtmlファイル(ここでは、myExif1.html と myExif2.html とします)を作成します(文字コードはUTF-8)。
この二つのファイルは同一フォルダに置かなければなりません。
- myExif1.html には、pattern1.html、myExif2.html には、pattern2.htmlのソースコードをコピーします。
myExif1.html:写真指定から未編集jsの表示まで
- myExif1.htmlをソースコードで開きます。先頭部分にある
<input id="選択指定場所" type="file" multiple onchange="実行('myPhoto/')">
の「'myPhoto/'」を修正してください。
これは、このページからみた myPhotoフォルダの相対URLのパスです。
<a href="myPhoto/xxx.jpg">xxx</a> のような関係です。
myExif1.html がmyPhotoフォルダ内にあるならば、'' としてください。
- ブラウザで開き[参照…]をクリックして、myPhotoフォルダを開き、対象とするjpegファイルを指定してください。
これにより、未編集のjsが青字で表示されます。
- (注意)ブラウザによっては、ローカルファイルのアクセスを許可していないことがあります。許可しているブラウザを用いるか、設定を変更して試みてください。
myExif2.html:未編集jsの整理
- myExif2.htmlをソースコードで開きます。先頭部分の <script>~</script> の個所に、先にmyExif1.htmlで生成した未編集js(青字部分)をコピー&ペーストしてください。
- <body onLoad="実行('配列名')"> の '配列名' を指定しください。これにより、配列の名称を任意に指定できます。
- ブラウザで開くと、通常配列と連想配列が表示されます。これがfileApiExifの成果物です。jsとしてお使いください。
いいわけ
- 私がいつも使う属性だけに絞りました。EXIF情報では撮影条件などは入っていません。しかし、myExif1.htmlのソースコード「Exifからの情報」の部分を、EXIFなどを参考にして修正できます。
- ほとんどの属性は、EXIF情報だけから得られますが、それよりも簡単に得られる属性は簡単な手段を用いています。多分に私の都合によります。
- 「住所」を取得する、逆ジオコード機能は google.maps を用いるのが通常ですが、それには Googleアカウントを取得する必要があります。ご利用者にそれを求めるのは不適切だと思い、私が自作した「さいたま市東部」の対応表を用いています。
- このツールをそのまま使うよりも、myExif1.html、myExif2.html のソースを適当に変更して使うことを前提にしています(私自身の使い方)。