ヘビィ・SMD!

そんな・・・バナナ!!
1. 甘え度+10 恐れ度+10 寿命-1週間
2. 甘え度+10 恐れ度-10
3. 甘え度-10 恐れ度-10 寿命+1週間


テーマ:
「写真の撮影日を使ってファイル名を管理したい」
そう思った私です。

ごきげんよう。

自分だけで画像を管理するのは特に不便に感じないんだが、
こと複数台のデジカメの画像を管理するとなると話は別だ。
○○社のデジカメはファイル命名規則は~~だ、とか各社のクセが出てしまう。
そこで、ファイル名を付け替えるツールを使っているわけだが、
ど う に も し っ く り こ な い
「この機能はこうなっていたらなぁ」
「ここのインターフェース気持ちわりぃ」
フリーのソフトに文句を言うつもりはないが、どうにも、ね。

「じゃあ自分で作ればいいじゃない」

そう思ったのでした。

撮影日時などの付加情報は、「exif」と呼ばれているらしい。
「exif java」と検索してみたら
java Exif 情報 取得: Concierge
というページに当たりました。
ほう。jarがあるんだね。
drewnoakes.com - jpeg exif / iptc metadata extraction in java
で、このページからmetadata-extractor-2.3.1.jarをダウンロードしてみた。
サンプルソースコードとかも書かれていたので、サンプルも作ってみた。

こんな感じ。



import java.io.File;
import java.util.Date;
import java.util.Iterator;

import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory;

public class ExifSample {

public static void main(String[] args) {
try {
// 画像ファイル
File file = new File("C:/img1.JPG");

// 色んなデータを出力してみる
viewAllData(file);
// 項目指定したデータを出力してみる
viewSomeData(file);
// 撮影日時をDate型で出力してみる
viewDateData(file);
}
catch (Exception e) {
e.printStackTrace();
}
}

@SuppressWarnings("unchecked")
public static void viewAllData(File file) throws JpegProcessingException {
Metadata metadata = JpegMetadataReader.readMetadata(file);
Iterator<Directory> directories = metadata.getDirectoryIterator();
while (directories.hasNext()) {
Directory directory = directories.next();
Iterator<Tag> tags = directory.getTagIterator();
while (tags.hasNext()) {
Tag tag = tags.next();
System.out.println(tag);
}
}
}

public static void viewSomeData(File file) throws JpegProcessingException {
Directory directory = JpegMetadataReader.readMetadata(file).getDirectory(ExifDirectory.class);
// 装置の製造元
System.out.println(directory.getString(ExifDirectory.TAG_MAKE));
// カメラのモデル
System.out.println(directory.getString(ExifDirectory.TAG_MODEL));
// 写真の撮影日
System.out.println(directory.getString(ExifDirectory.TAG_DATETIME));
}

public static void viewDateData(File file) throws JpegProcessingException, MetadataException {
Metadata metadata = JpegMetadataReader.readMetadata(file);
Directory directory = metadata.getDirectory(ExifDirectory.class);
Date date = directory.getDate(ExifDirectory.TAG_DATETIME);
System.out.println(date.toString());
}
}



うん。
viewDateDataメソッドを応用すれば撮影日時がとれるね。
色々できそうだ。
AD
いいね!した人  |  コメント(0)  |  リブログ(0)

smdbananaさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。