PROGRAMMING
Java
- IntelliJ.Gradle.JavaFX(6) プラグイン org.beryx.jlink を使ってみる
- IntelliJ.Gradle.JavaFX(5) NSISでインストーラーを作る
- IntelliJ.Gradle.JavaFX(4) exewrapで実行可能jarをexe化する
- IntelliJ.Gradle.JavaFX(3) Jlink でカスタム JRE を作る
- IntelliJ.Gradle.JavaFX(2) すべての依存対象を含んだ Fatjar を作る
- IntelliJ.Gradle.JavaFX(1) アプリケーションを作る
- javaのコンパイルと実行
- イメージを回転する
- Exif情報を簡単に取得できるライブラリ
- 高画質で画像縮小
- JDBCによるデータベース操作
javascript
- ページャーを作る(簡易版)
- ページャーを作る 4/4
(クロスブラウザ対策)
(ページャー表示用メソッド)
(ページャーの使い方) - ページャーを作る 3/4
(イベント登録) - ページャーを作る 2/4
(スタイルの設定) - ページャーを作る 1/4
(ページャー用関数を準備)
(各要素を生成) - 自作カレンダーを作る 6/6
(11.~14.各種メソッド)
(15.簡単な使い方) - 自作カレンダーを作る 5/6
(09.祝休日の判定)
(10.閏年の判定) - 自作カレンダーを作る 4/6
(08.イベントの設定) - 自作カレンダーを作る 3/6
(07.スタイルの設定) - 自作カレンダーを作る 2/6
(05.カレンダーのマスのみ作成)
(06.各マスへ年月・日付を埋め込み) - 自作カレンダーを作る 1/6
(01.カレンダーの基を準備)
(02.各月の日数や年月日の区切り文字)
(03.前月・次月指定時の処理)
(04.前月・次月部分の年月を算出) - JS-Image-Resizerを使って画像を高画質で縮小
- ファイルを作成しローカルに保存
- モーダルウィンドウをクラス化
- ストップウォッチを作る
- XMLHttpRequest Lebel2を試してみる
- jQuery:Tableで親・子・兄弟要素を取得
- 文字列をセパレータ文字で分割し配列で返す関数
- forループのカウンタを使用している関数の定義
- クロージャの使いどころ
- JSONPでクロスドメイン
- AjaxでJSON形式のデータを扱う
- jsファイルからjsファイルを呼び出す
- jQuery:モーダルウィンドウを作ってみる
PHP
Kotlin
Exif情報を簡単に取得できるライブラリ
孫の写真を撮影年月別に整理するため、ワンクリックで振り分けできるツールを以前作りました。
ファイルのプロパティの更新年月日を見て振り分けるものでしたが、撮影年月日とは違うため、なかには手作業で再度振り分ける場合もありました。
Exif情報を取得できれば撮影年月日で振り分けできると思いネットを探したら、metadata-extractorというライブラリの存在を知り早速試してみました。
-----2016.11.17(追加)-----
「個別タグの取得方法」があった方が良いので追加しました。
ライブラリの準備
ライブラリは現在の最新バージョンである metadata-extractor-2.8.1 をダウンロードしました。
このページにサンプルも掲載されているのでコピペで簡単にできました。
metadata-extractorのサイト:https://drewnoakes.com/code/exif/
ダウンロードのページ:https://github.com/drewnoakes/metadata-extractor/releases
ダウンロードしたmetadata-extractor-2.8.1.zipを解凍すると
・ metadata-extractor-2.8.1.jar
・ xmpcore-5.1.2.jar
の2個のjarがあり、それを使うことになります。
Exif情報取得のコード
インポートは次の4個になります。
メインのExif情報取得のコードです。
jpegファイルのみを対象にする場合はコードの2行目を
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
に変更するといいようです。処理が速くなるようですが自分ではちょっと分かりませんでした。
このコードを実行して出力された全Exif情報が次のリストです。
最初のカッコで囲まれた部分がDirectoryName、次がTagName、イコールの後がDescriptionです。
Exif情報の絞り込み
自分は撮影年月日が必要でしたので4行目のforループ内を次のように変更して使いました。
getTagName()の先頭に Date/Time の文字を含むデータを抽出すると次のような出力になりました。
「Date/Time Original」 が撮影年月日なので文字を
「Date/Time Original」に絞り込んでデータを抽出すると目的が達成できることになります。
便利です。
個別タグの取得方法
取得したいタグが決まっている場合はそのタグが含まれるディレクトリを指定して取得した方が良いと思います。
下記のコードはオリエンテーションタグの例です。
カメラの機種によってはカメラの傾きを感知して撮影するものもあり、
その場合はオリエンテーションタグを含んだディレクトリが無いことがあります。
そのため、NullPointerException回避のためのコードもあったほうが良いようです。
主なタグのいろいろです。
・カメラメーカー:ExifIFDDirectory.TAG_MAKE
・カメラモデル:ExifIFDDirectory.TAG_MODEL
・絞り値:ExifSubIFDDirectory.TAG_FNUMBER
・露出時間:ExifSubIFDDirectory.TAG_EXPOSURE_TIME
・ISO感度:ExifSubIFDDirectory.TAG_ISO_EQUIVALENT
・露出:ExifSubIFDDirectory.TAG_EXPOSURE_BIAS
・焦点距離:ExifSubIFDDirectory.TAG_FOCAL_LENGTH
・撮影日時:ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL
・回転情報:ExifIFD0Directory.TAG_ORIENTATION