Picmvr 0.80



●Picmvr とは


・デジタルカメラで撮影した画像を任意のディレクトリにコピーするフリーソフトウェアです。
・Picmvと似ていますが、Picmvほど高速に動作しません。
・Picmvと似ていますが、PicmvにはなかったGPS関係の機能が追加されています。またPicmvを開発した頃には存在しなかったWPFを用いてUIを開発しています。
・GeoTagが埋め込まれたJPGファイルを認識しファイルの命名に利用することができます。
・ローカルで動作する逆ジオコーダーを内蔵していて、GeoTagから日本国内の地名に変換することができます(%Lマクロ)。
  ただし実験中の機能でありデータ圧縮の都合上精度は良くありません。
  なおローカルの逆ジオコーダーを開発するにあたり、国土交通省が公開する「国土数値情報(行政区域データ)」を加工して使用しています。関係者の皆様に感謝いたします。
・独立行政法人農業・食品産業技術研究機構 近畿中国四国農業研究センターが運営するFinds.jpが提供するWebサービスを逆ジオコーディングに利用することもできます。
  アクセス回数に制限がありますので、制限を超えた場合はローカルの逆ジオコーダーをPicmvrは使用します。サービスを公開されているFinds.jpの皆様に感謝いたします。
・Exifヘッダの撮影日時情報を元にファイル名に命名します。命名規則はユーザが定義することができます。
・JPGファイル以外も任意の拡張子のファイルを対象にできます。
・メモリカードを自動認識することができます。
・コピー先ディレクトリ名も撮影日時情報から命名することができます。
・WPF(Windows Presentation Foundation)を用いています。
・プレビュー画面においてGoogle Mapを用いて撮影場所の確認をすることができます(停止中)


**** 使用する場合は、大切な写真ファイルを失わないように、必ず写真ファイルのバックアップをとってください。 ****
**** 使用する場合は、大切な写真ファイルを失わないように、お使いのカメラ、PC環境で十分にテストをしてください。 ****
**** どのような事象が発生しても一切の責任を作者はとることができません。 ****


●動作環境

Windows 10
.NET Framework 4.5以上


●ZIP 版のインストール方法

適当なディレクトリを作成し、アーカイブを展開します。



●ZIP 版のアンインストール方法

インストールしたディレクトリを丸ごと削除します。



●使い方

1. Picmvr.exe を起動します
2. ファイル入力元、出力先、命名規則などを適切に設定し、実行ボタンを押します
3. コピーされます

または、

1. Picmvr.exe を起動します
2. ファイル入力元、出力先、命名規則などを適切に設定し、ファイルやフォルダを指定のパネルにドロップします
3. コピーされます



●ファイル・ディレクトリの命名法について

%Y 4桁の年号
%y 2桁の年号
%m 月
%d 日
%H 時
%M 分
%S 秒
%W 週(英語表記)
%w 週(日本語表記)
%k メーカー名
%l モデル名
%L 撮影場所
%V キーワード

例: %y%m%d_%H%M%S → 050315_221202

例えば、撮影日時が2005年2月14日12:34:59の場合、
%Y=2005,%y=05,%m=02,%d=14,%H=12,%M=34,%S=59に置換されます。
EXIFヘッダがない場合や JPEG ファイル以外ではタイムスタンプを利用します。

%% は % 文字自体を示します。

ファイル命名法に拡張子は記述できません。

%o は元ファイル名・ディレクトリ名に置換されます。

ファイル名が重複する場合の処理は、シリアルナンバを付加することができます。




●バージョン履歴

2011.4.14  0.00 作成開始
2013.9.16  0.10 公開
2013.11.12 0.11 GPXファイルを登録している状態で、写真の撮影時刻の補正をコンテキストメニューからおこなった場合に、地名を再取得しないことがあったので修正した。
                開発環境を Visual Studio Express 2013 for Windows Desktop に変更した。
2013.12.21 0.12 リサイズに使用するnStamper.exeの終了処理がうまくいっていなかったので修正した。
2013.12.29 0.13 外観の調整
2013.12.30 0.14 転送終了時にウィンドウを前面に出すようにした
                サムネイルのアニメーションを調整した
2015.12.30 0.16 開発環境を Visual Studio 2015 に変更した
                GoogleMapsのエラーダイアログを抑止した
                外観の調整
2015.12.30 0.17 インストーラー版の追加
                細かい調整
2015.12.31 0.18 構成をx86からAnyCPUに変更した
                細かい調整
2016.2.13  0.20 起動処理の高速化
2016.4.3   0.30 コピー履歴のあるファイルの転送を抑止できるようにした
2016.4.4   0.31 コピー履歴のあるファイルの転送を抑止したとき、ファイル数カウンター表示がおかしかったので修正した
                プレビューダイアログの下の方がスクリーンをはみ出すことがあったので修正した
				コピー履歴のデータベースへのアクセス方法を調整した
2016.4.19  0.32 ファイル命名法の入力のためにフォルダ参照ボタンを追加した
                ファイル命名法の追加ボタンを追加した
				起動時にコピー履歴データベースの情報をログに表示するようにした
				.NET Framework 4.5以上が必要になった
2016.4.26  0.33 コピー履歴データベースの不要なレコードを自動的に削除するようにした
                コピー履歴データベースにメディアのIDとカメラ名のフィールドを追加した
                メディア表示に空き容量表示をするようにした
2016.4.27  0.34 Exifを含まないJPEGファイルを扱うと、クラッシュすることがあったので修正した
                プレビューウィンドウのコンテキストメニューに「コピー済みとする」メニューを追加した
2016.4.29  0.35 コピー履歴データベース内容を確認できるようした([設定]-[コピー履歴を確認...]メニュー)。
                データベースのテーブル調整
				UI調整
2016.5.03  0.36 プレビューリスト内で元ファイルを削除できるようにした
                転送元ファイルのフォルダとファイル名が偶然過去のものと同一な異ファイルの転送後に、コピー履歴データベースの必要なレコード更新が行われないことがあったので、テーブルを更新して対処した。(UNIQUE ON CONFLICT IGNORE wo
				 REPLACE にした  )
				UI調整
2016.5.05  0.37 Picmvrがすでに起動していたときの処理を調整した
                ドライブのコンテキストメニューにコピー履歴メニューを追加した。メディア内のファイルを一括してコピー済み扱いにしたり未コピー扱いにすることができる
				ドライブリストに「更新」コンテキストメニューを追加した
				スピンボックスUIの挙動を調整した
2016.6.01  0.38 転送元ファイルのフォルダとファイル名が偶然過去のものと同一な異ファイルの転送後に、コピー履歴データベースの必要なレコード更新が行われないことがあったので、テーブルを更新して対処した。(UNIQUE ON CONFLICT REPLACE を削除)
2016.10.16 0.40 GPX/KMLファイルを読み込ませた状態で、撮影時刻補正を行ったJPEGファイル以外ファイル転送において、必ずエラーが発生していたので修正した。
2016.12.21 0.50 UIのレイアウトを大幅に更新した
                デジタルLED風の表示処理のパフォーマンスが著しく悪かったので修正した
				ドロップ時の元ファイル削除設定をメディア転送時の削除設定とは別個のものにした
				GPSファイルを自動収集する機能を追加した(GPSドロップUIのコンテキストメニュー)
				転送終了時に最後に転送したファイルを開けるようにした(設定メニュー)
				転送終了時に転送したファイルのフォルダを開けるようにした(設定メニュー)
				転送終了時にPicmvrを終了できるようにした(設定メニュー)
2016.12.26 0.51 転送終了時のフォルダ自動開き機能を転送した全てのフォルダに変更
                UIの外観とレイアウトの調整
2017.1.1   0.52 転送プレビューウィンドウにGoogle Mapsを表示するかどうか選択できるようにした(設定メニュー)
				転送ルールのロックアイコン追加
				コピー前のコピー履歴参照処理のパフォーマンスを改善した
                UIの調整
				アイドル時のCPU負荷が大きい問題を修正した(ver.0.32から発生していた。不要なDispatcherTimerインスタンスを生成しInterval未設定のままStart()していたら、大きなCPU負荷が発生していた)
2017.1.9   0.53 UIのアニメーションの一部を抑止できるようにした(設定メニュー)
                関連付けされたアイコンを表示するようにした
                転送ルールビューの水平スクロールバーが出現しなかったので修正した。転送ルールビューの転送ルールロック時のビジュアルを修正した。
                UI調整(チェックボックスのスタイル、Webリンクのスタイル、Twitterアカウントへのリンク追加、メニュー文言調整、フォント調整、アイコン等調整、カラー調整)
                設定保存ボタンを追加した
2017.1.20  0.60 ポータブルデバイス(デジタルカメラ、Androidスマートフォン、iPhone)とUSBケーブル接続(PTP/MTP)をサポートした。Nikon COOLPIX S7000、iPhone4S、ACer Liquid Z530などで動作確認した
                サムネイルのアニメーションを抑止できるようにした
                残り時間カウンターが停止しないことがあるバグを修正した
2017.1.22  0.70 コピー処理のスレッド構成を大幅に変更し、より並列化を高め高速化した。
2017.1.22  0.71 設定の保存ができなくなっていたので修正した。
                プログラム更新の有無を確認できるようにした(ヘルプメニュー)。
2017.1.25  0.72 英語版を追加した
                UI調整
2017.2.9   0.73 MTP/PTPデバイスの名前が取得できない機種があったので修正した。
                いくつかのデジタルカメラのうち、MTP/PTPを用いたファイル名列挙が非常に遅い機種があった。これに対応するため転送除外フォルダの設定をできるようにした(設定メニュー)。
                UI調整
2017.2.25  0.74 転送終了後の処理としてファイルを読み取り専用化できるようにした(設定メニュー)
                読み取り専用ファイルに対する上書き処理はこれまでエラー扱いだったが、スキップ扱いに改めた。
				MTP/PTPデバイスのコピー履歴によるスキップ処理において、小文字が含まれているファイル名に限り、正しくスキップされないことがあったので修正した。
                UI調整
2017.3.4   0.75 転送ルールの削除・複製・移動が全くできなくなっていたので修正した
                転送準備中を中止するボタンが表示されずUIが意図通りに表示されなくなっていたので修正した
2017.3.29  0.76 ビルド環境を Microsoft Visual Studio Community 2015 から 2017 に変更した
                メモリカード内のDCIMフォルダ以外のJPEGファイルも転送できるようにした(設定メニュー)
                標高情報の存在しないトラックポイントがあるGPXファイルのパースがうまくいかないことがあったので修正した
2017.7.12  0.77 クリップボードを監視するソフトウェアとの相性問題があったので修正した
2017.8.5   0.78 PTP/MTP転送除外フォルダの設定が反映されないことがあったので修正した
2017.9.28  0.79 破損したJPEGファイルを処理するときにプログラムが停止することがあったので修正した
                GoogleMapsの表示を中止した｡使用してるBrowserコンポーネントのJavaScript対応状況のため中止した(今後Chromium等の利用を考えている)
2017.11.11 0.80 転送先がディスクフルの場合に、処理の中断がうまくいかないケースがあったので対処した。最悪の場合、ムーブに失敗してファイルを失うことがあった
                Altキーを押しながら起動したときに、設定ファイルを一切読み込まないようにした。





TODO:
- 登録したGPSログをかんたんにコピー
- 複数の設定グループ
- 前回の転送歴を起動時に表示
- 簡単ショートカット デフォルト設定ボタン、年月日ボタン etc
- メディアアイテムのビジュアルのカスタム化
- 特定のプログラムで開く機能
- OSの自動再生サポート
- 経過予想％ラベル表示
- 転送ルールカラムにガイド、ボタン、キーワードを格納できる。有効にスペースを利用できる
- 経過予想ラベル部に、コピー中ファイル名表示可能（サムネイルも）
- 全体をChrome化し、カラーで状態をわかるようにする
- コピームーブのスライドスイッチ化(タスク志向)




●開発環境

Windows10(x64)
Microsoft Visual Studio Community 2017 (C#)



●ライブラリ

WPF4.6

System.Data.SQLite
Windows 7 API Codepack

ポータブルデバイスの転送処理についてはChristophe Geers' Blogの記事とコメントを参考にしました。関係者の皆様に感謝いたします。
https://cgeers.wordpress.com/2011/08/13/wpd-transferring-content



●作者

橋本直之
メール: hashimoto.naoyuki@gmail.com
WEB: http://www6.plala.or.jp/nyk

