y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

 EXIFファイル名を受け取り緯度経度を抜き出すコンソールアプリ

先のエントリで書いたDLLを使って、EXIFファイル名を受け取って、緯度経度を書きだすコンソールアプリを書いてみた。
基本的な使い方は
コマンドラインで、
>exif2point.exe [フルパスファイル名]
なんて打つと、コマンドライン上にファイル名と緯度経度が表示される。
コマンドラインへのフルパスファイル名は、ドラッグアンドドロップでも代用できるので、起動しておいてエクスプローラからドラッグアンドドロップなんてのもGood。

しかしせっかくのコンソールアプリなんで、dirの出力結果を流し込んでみよう
>dir データディレクトリ名\*jpg /s /b | exit2point.exe >pointlist.txt

これは素晴らしい結果が得られる。
あるディレクトリの下にあるjpgファイルを読み取って、緯度経度をテキスト出力する。
上記で、本来やりたかったことが実現出来ているわけだが、ここは、さらにファイル入出力をかませてみよう。

>exif2point.exe < [あらかじめ用意したファイルリスト] > pointlist.txt
なんてしておくと、バッチ処理をして、テキストを書きだしてくれる。(dirで直接の方がカッコいいね)

いいなぁ、コンソールアプリ。
以下、exeを作った時のC#ソースファイルを恥じらいながらも公開。
C#(Visual Studio 2008 ExpressEdition)プロジェクトファイル

using System;
using System.Collections.Generic;
using System.Text;
using lib; //自作DLL

namespace exif2point
{
class Program
{
static void Main(string[] args)
{
string s = "";
lib.exif.Point p = new lib.exif.Point();

s = Console.ReadLine();
while (s != null)
{
if (s.ToLower() == "exit")
{
return;
}
if *1
{
lib.exif obj=new lib.exif();           
p = obj.getLatLon(s);
Console.WriteLine(s + ",[" + p.Lat.ToString() + "," + p.Lon.ToString() + "]");
}
else
{
Console.WriteLine(s + "が存在しません。");
}
}
else
{
Console.WriteLine(s + "は不正なファイル名です。");
}
s = Console.ReadLine();
}
}

}
}

*1:s.Length > 4) && (s.ToLower().EndsWith(".jpg"))) { if (System.IO.File.Exists(s