Picmv ver.1.30


●Picmv とは

・デジタルカメラで撮影した画像を任意のディレクトリにコピーするフリーソフトウェアです。
・複数のデジタルカメラとメモリカードリーダを持っている場合に便利です。
・Exifヘッダの撮影日時情報を元にファイル名に命名します。命名規則はユーザが定義することができます。
・JPGファイル以外も任意の拡張子のファイルを対象にできます。
・メモリカードを自動認識することができます。手動で設定することもできます。
・元ディレクトリは複数指定することができ、存在しなくてもエラーになりません。これは
  マルチメモリカードリーダを使ったときに便利に使えるようにするためです。
・コピー終了後にメモリカードを自動的にイジェクト(取り出し)することができます。
・コピー先ディレクトリ名も撮影日時情報から命名することができます。
・サムネイル(縮小画像)を出力することができます。
・縦画像属性により画像を回転して出力することができます
・コピー中は OpenGL を使ったグラフィカルな進捗表示を行います。特にメモリカードを自動認識する
  設定にしている場合は、メディアの挿入とイジェクトがアニメーションで表現されます。
  また、ヒストグラムを表示することもできます。
・コピー中、いつでも中止することができます。

大切な写真ファイルを失わないように、お使いのカメラ、PC環境で十分にテストをしてください。
全てのカメラ・メモリカードリーダでのテストができません。
何が起きても責任は取れません。



●動作環境

Windows2000 / XP / XPx64 / Vista(ZIP版) / Vista x64(ZIP版)
最低でも 1024x768 のスクリーン(システムフォントサイズ標準時)



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

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



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

インストールしたディレクトリを丸ごと削除します。Picmv.exe 自体がレジストリを利用することはありません。



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

Windows の標準的な方法でアンインストールします。
コントロールパネル→アプリケーションの追加と削除→プログラムの変更と削除→Picmv→変更と削除を
クリックします。



●使い方

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

または、

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



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

%Y 4桁の年号
%y 2桁の年号
%m 月
%d 日
%H 時
%M 分
%S 秒
%w 週(英語表記)
%W 週(日本語表記)
%k メーカー名
%l モデル名
%g 元号による年号

例: %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 ファイル以外ではタイムスタンプを利用します。

出力先ディレクトリにも撮影情報からの % 指定は有効です。Picmv は指定したディレクトリが
存在しないときは確認なしに作成します。
上記の % 表記に「a」を挿入した、%aY、%ay、%am、%ad、%aH、%aM、%aS、%aw、%aW では実行時刻に置換されます。
実行時刻とは実行ボタンを押した瞬間の時刻です。ディレクトリの命名に使用すると
月日をまたがるイベントの取り込みに便利かもしれません。

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

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

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

ファイル名が重複する場合の処理は、シリアルナンバを付加するか、コピーしないか、
上書きするかをあらかじめ選択します。



●注意事項

・メモリカードの自動認識は、リムーバブルディスクでなおかつルートに DCIM というディレクトリがあるとそれと認識されます。
・画像処理系の機能はJPEGにのみ有効です
・サムネイルは常にバイリニア補間とアンシャープマスク処理を行っています。
・イジェクト機能は、エクスプローラーでいうところの「リムーバブルディスクの取り出し」です。「ハードウェアの取り外し」
  「ハードウェアの停止」ではありません。
・ドラッグアンドドロップは起動している状態でのみ受け付けます。エクスプローラーから Picmv.exe にドロップしても起動するだけです。
・元ファイルがリードオンリー属性の場合、コピー後のファイルは常にリードオンリー属性を解除します。
・元ファイルのタイムスタンプは、常にコピー後のファイルにそのままコピーされます。
・JPEG ファイル以外のプレビューはできません。
・PREVIEW という名前のフォルダのファイルはコピーしません。
・オプションと設定は「設定保存」ボタンでインストールしたディレクトリの PicMove.ini に保存されます。
・デフォルトの状態に戻すには PicMove.ini を削除してください。
・上書き設定は非推奨としました。
  最悪でファイル消失の危険があります。
  なぜなら、同時刻 EXIF 情報をもった写真や、EXIF なしで同時刻タイムスタンプをもった写真を
  一括コピーする場合に、同一ファイル名になっていまったファイル群が、
  上書きで最後のコピーだけが生き残る場合があるからです。
  このとき、もしも「元ファイルを削除」にチェックをいれていた場合、ファイルを失うことになります



●シリアルナンバについて

Picmv ではファイル名にシリアルナンバを含ませることができます。この機能は
ファイル名が重複したときに上書きを回避するためだけに存在しています。

ファイルの命名においては、一貫性があり永続的に使用可能な名前をつけるべきだと思います。
よって %y%m%d_%H%M%S と秒単位までの名前を命名することをお勧めします。
%y%m%d などとして積極的にシリアルナンバを付加するのは、
一貫性のない名前になりやすく全くお勧めできません。したがって秒2コマ以上撮影することを
普段からされている方に Picmv をお勧めすることはできません。




●オプション

・メモリカード自動検出-検出間隔
    「メモリカードを自動認識させる」チェックボックスがオンになっている場合のみ有効です。
    リムーバブルディスクのルートディレクトリにDCIMという名前のディレクトリが存在するかどうかを確認する間隔です。
    1秒から5秒まで指定できます。あまり短くするとパフォーマンスが低下する可能性がありますし、
    長くすると応答性が下がりユーザビリティが下がりますので、適当な位置にセットする必要があります。

・コピー処理進捗
    コピー処理を行っているときの進捗表示の負荷をコントロールします。
    ここでの設定は Picmv の動作結果そのものには影響を与えませんが、
    楽しい経過表示をさせたいときは 工夫して設定するとよいでしょう。

・入力-入力ファイル拡張子
    「JPG,JPEG,AVI」などと、入力させたいファイルの拡張子を,(カンマ)で区切って記述します。
    JPG は常に存在し消去することができません

・出力-JPEG生成時の品質設定
    Picmv が JPEG ファイルを生成するときの品質を設定します。
    JPEG ファイルは通常コピーされて 出力されるので、この場合は品質の設定は無関係です。画像処理やサムネイルにだけ関係します

・ファイル名重複時に追加するシリアルナンバ書式
    「ファイル名重複時の処理」で「シリアルナンバを付加する」設定になっている場合にのみ有効です。
     区切り文字列と、桁数を指定します。シリアルナンバは十進数で表現されます。

・拡張子の大文字・小文字変換設定
    入力ファイル名の拡張子を大文字小文字変換するか、なにも変換しないかを選択します。

・スマートコピー
    重複時上書き設定でファイル内容同一ならコピーをスキップします
    重複時シリアルナンバ付加設定でファイル内容同一のものを発見したらコピーをスキップします
    ファイル内容の同一性の確認の処理が重いことがあるのがデメリットです
    スマートコピーは安全かつ便利なので作者はこれを推奨しています





●コマンドラインオプション

オプションは設定が保存されている Picmove.ini の内容の上に設定されます。
オプションは自動的に保存されません。
オプションは大文字小文字を区別しません。

書式: Picmv <indir> <options...>

オプション:

-confirm [on|off]
    処理内容の事前確認を指定します

-autoquit [on|off]
    実行後に終了することを指定します

-autodetect [on|off]
    メモリカードの自動認識を指定します

-deleteorg [on|off]
     元ファイルの削除を指定します

-indir "ファイル入力元ディレクトリ群,..."
    入力元ディレクトリをセットします

-outdir "出力先ディレクトリ命名法"
    出力先ディレクトリ命名法をセットします

-outfile "ファイル命名法"
    ファイル命名法をセットします

-makethumbnails [on|off]
    サムネイルの作成を指示します

-thumbnailwidth [width]
    サムネイルの幅を指定します

-thumbnailoutdir "サムネイル出力先ディレクトリ命名法"
    サムネイル出力先ディレクトリ命名法をセットします

-thumbnailoutfile "サムネイルファイル命名法"
    サムネイルファイル命名法をセットします

-ow_addsn
    ファイル名重複時にシリアルナンバの付加を指定します

-ow_snchar "シリアルナンバとの区切り文字"

-ow_sndigits [桁数]

-ow_nocopy
    ファイル名重複時にコピーしないことを指定します

-smartcopy [on|off]
    スマートコピーを指定します

-rotatebyexif [on|off]
    オリエンテーション属性より回転します

-accept  [拡張子,...]
    受け付ける拡張子を指定します

-addsn [on|off]
    常にシリアルナンバをつけます

-autoexec
    自動的にコピー処理の実行を開始します




●バージョン履歴

2005.2.9  0.00   作成開始
2005.2.26 0.50 ・公開
2005.3.2  0.61 ・処理中のファイルがロックされていたときに発生する例外に対処していなかったので修正
2005.3.19 0.70 ・起動中にダイアログへのドラッグアンドドロップを受け付けるようにした
               ・処理確認ダイアログで処理内容を確認できるようにした
               ・*.JPG 以外のファイルを受け付けるようにした
               ・ヒストグラムをプレビューできるようにした
               ・ファイル名命名規則で %w %W で曜日に置換するようにした
               ・ファイル名命名規則で %aY %ay %am %ad などで現在日時に置換するようにした
               ・ファイル名命名規則で %o で元ファイル名に置換するようにした
               ・ファイル名重複時にシリアルナンバを付加する場合に、区切り文字列と数値の桁数を指定できるようにした
2005.3.19 0.71 ・ヒストグラムシーンでのカメラモーション、ライティングを調整
2005.3.20 0.72 ・manifest ファイルをアーカイブに追加した
                 ヒストグラムシーンでオブジェクトの下に座布団をいれた
2005.3.20 0.74 ・EXIF 情報取得を別スレッドで行うようにして、中止可能にした。これにより大量のファイルをドロップした
                 ときなどのロックがなくなる。
2005.3.21 0.75 ・ヒストグラムシーンで撮影日時を時計で表現するようにした。
2005.3.21 0.76 ・時計に半透明座布団・モーション
2005.3.23 0.77 ・EXIF の日時情報が 1970 年以前のときアプリケーションエラーで停止していたので修正した
               ・時計オブジェクトの描画でアンチエイリアス処理をするようにした(針のジャギーが見苦しかったため)
               ・時計オブジェクトで日時も描画するようにした
               ・3D シーンでのテクスチャイメージが解放されないことがあったので修正
               ・3D シーンでのライティング調整
2005.3.23 0.78 ・入力ディレクトリと出力ディレクトリが同一でしかもファイル名も同一のとき、
                エラーとならず 0 バイトのファイルを生成していたので修正
2005.3.23 0.79 ・右側のスクロールするビューが、小さいサイズのファイルや高速なマシンなどの条件で動きが停止することが
                 あったので修正
               ・命名法の最後が%で終わっていた場合に、拡張子なしでの置換となっていたので修正
               ・時計秒針にブラーを描画することにした(過去に進んでいるか、未来に戻っているかを視覚的に分かりやすく
                 するため)
2005.3.24 0.80 ・コピー残数を 7 セグメント風のデジタルカウンタで表示するようにした
2005.3.24 0.81 ・同名ファイルをスキップするとき右側のビューに何をスキップしたか表示するようにした
2005.3.28 0.82 ・ヘルプファイルを追加した(現状では ReadMe.txt を移植しただけで貧弱)
               ・命名規則のエラーチェックを強化した
               ・命名規則の入力時にリアルタイムに名前のプレビューを表示するようにした
               ・インストーラ版も公開することにした
2005.3.30 0.83 ・サムネイルの命名規則にもリアルタイムなプレビューを表示するようにした
2005.4.7  0.84 ・命名規則のリアルタイムプレビューが予期しないタイミングで更新されていたので修正した
               ・メモリカードを自動認識する設定で起動したときにカードが挿入されていない場合、3Dシーンにグリッドが
                 描画されていなかったので修正した
2005.4.8  0.85 ・命名規則のリアルタイムプレビューがまだおかしかったので修正
               ・コピー終了時とキャンセル時に 3D ビューにフライングメッセージ演出追加
2005.4.10 0.86 ・ファイルを一つもコピーしなかったときはフライングメッセージを抑止するようにした
               ・ウィンドウのサイズを縦に詰めた
2005.4.10 0.87 ・ファイル出力時の拡張子を大文字/小文字/大小無変換と選択できるようにした(オプションウィンドウ)
               ・ヘルプファイルにオプションについて記述するようにした
2005.5.22 0.88 ・3D ビューのライティング修正
               ・事前確認ダイアログがおかしかったので修正
               ・ファイルコピーにシェル API を使うようにした。
                 これによりプロパティがコピーされないことがあるバグが修正される
               ・システムメニューから、実行、中止、設定保存、オプションを呼べるようにした
2005.6.1  0.89 ・サムネイルの最大幅を 640 から 3200 に変更した。
               ・スマートコピー機能を追加した
                 →重複時上書き設定でファイル内容同一ならコピーをスキップ
                 →重複時シリアルナンバ付加設定でファイル内容同一のものを発見したらコピーをスキップ
2005.6.1  0.90 ・Exif から撮影時刻を読み込む部分を修正した
                 →DateTime タグのみをこれまでは使用していたが、
                   DateTimeOriginal と DateTimeDigitized を優先使用することにした
                 →これにより、一部のカメラで正常に撮影時刻を読み込めなかった問題が修正される
               ・F1 キーでヘルプが見つからないというエラーが出ていたので修正した
2005.6.3  0.91 ・スマートコピー+シリアルナンバ付加設定で、
                 シリアルナンバ=1だけはファイルの同一性のチェックをしていなかったので修正した
2005.6.9  0.92 ・ディレクトリ命名規則で %W を末尾に使ったとき月水金日曜日のディレクトリ作成に
                 必ず失敗していたので修正した。(SJIS 2バイト目の判定ミス)
               ・インストーラ作成ツール Inno Setup を ver.5.1.4 にした
2005.6.21 0.93 ・スマートコピー+シリアルナンバ付加設定、初回のコピーでシリアルナンバ付加が
                 全く動作せずスキップ処理になっていたので修正した(0.91 でのエンバグ)
2005.7.9  0.94 ・取り込んだファイルを画像ビューワ Picgl 0.53 以降に自動的に渡す機能を追加(オプション)
                 →Picgl が起動していれば Picgl のアイドル時に取り込まれる
                 →Picgl が起動していなければ、次の Picgl 起動時に取り込まれる
               ・スマートコピーでシリアルナンバ=1だけはファイルの同一性のチェックをしていなかったので修正した(0.93で再発したバグ)
2005.7.25 0.95 ・x64 か x86 かをアバウトダイアログに表示するようにした
               ・ビルド環境の変更
2005.7.29 0.96 ・Exif ヘッダの読み込みにおいて、TIFF ヘッダと IFD の間にパディングなどのデータが常に存在しないという誤った仮定をしていたので修正した
                 →この修正により特定のデジタルカメラで読めなかった撮影情報が読めるようになった
               ・破損した JPEG ファイルのチェックを厳しくするようにした
2005.8.19 0.97 ・言語に依存する部分を別 DLL に分離し、英語版をリリースした
               ・デフォルトの出力先をマイピクチャにした
2005.9.13 0.98 ・オプションに「非重複でもシリアルナンバ1を追加する」を追加した
                 →常にシリアルナンバを付加したい場合に使用する
               ・「オリエンテーション属性による画像回転」においてJPEG ファイルのロスレス回転をさせるようにした
               ・自動コントラスト調整を廃止した(取り込み時にこの処理をするのは危険と判断したため)
               ・事前確認オプションを使うとプログラムが停止することがあったので修正した
2005.9.17 0.99 ・グレースケールの JPEG 画像を処理しようとするとアプリケーションエラーが発生していたので修正した
               ・コピーを撮影時刻の早い順におこなうようにした
                 →これによりファイル重複時にシリアルナンバの並びが揃えられやすくなる
2005.9.27 1.00 ・コマンドラインオプションを追加した
2005.9.28 1.01 ・ウィンドウサイズを小さくできるようにした
                 →Picmvのシステムメニューより「ウィンドウサイズ変更」を選択する
2005.9.28 1.02 ・命名規則の簡単なヘルプを用意した
                 →「?」ボタンを押すと出てくる
               ・細かい修正
2005.10.18 1.03 ・Adobe Photoshop などで保存した JPEG ファイルから、EXIF ヘッダの撮影情報を読み取れないことがあったので修正した
2005.10.23 1.04 ・デフォルト設定を「小さなウィンドウ」にした
                ・細かい修正
2005.11.8  1.05 ・サムネイルの出力において従来は横幅しか指定できなかったが、縦サイズまたは横x縦サイズも選択できるようにした
                  →横x縦サイズを選択した場合はアスペクト比を保つため余白が指定のソリッドカラーで埋められる
                ・細かい修正
2005.11.10 1.06 ・オプションに「メモリカードの\DCIMフォルダ以外からもコピーする」を追加した
                  →これをチェックすると自動認識されたメモリカードのルートから全てのフォルダを探索しコピーの対象とする
2005.11.18 1.07 ・Exif ヘッダの DateTimeDigitized を無視し、(1)DateTimeOriginal (2)DateTime の順で撮影時刻として採用するように仕様を変更した
                  →これによりカメラ内での編集作業の時刻ではなく撮影された時刻を採用するようになる
2005.11.22 1.08 ・余分なコードを削除
                ・細かい修正
2005.12.12 1.09 ・細かい修正
2006. 2.11 1.10 ・x64 版の jpegrotw.exe(JPEG ロスレス回転プログラム) は従来32ビットプログラムとしてビルドしていたが、x64 ネイティブコードに変更した
                ・細かい修正
2006. 6.30 1.20beta1 ・内部での縮小テクスチャ作成処理を3倍程度高速化した。ただしサムネイルファイルを出力する場合は無効。
                     ・命名規則に %k を追加した。メーカー名を意味する。JPEG ファイル以外などでメーカー名を取得できない場合は _Maker に置換される。
                     ・命名規則に %l を追加した。モデル名を意味するJPEG ファイル以外などでモデル名を取得できない場合は _Model に置換される。
                     ・命名規則に %g を追加した。元号による年号を意味する。
                     ・細かい修正
2006. 7.24 1.20beta2 ・ヘルプファイルを改訂した
                     ・システムメニューから Picmv 配布ページを Web ブラウザで開けるようにした
                     ・細かい修正
2006.12. 1 1.20beta3 ・デフォルトのウィンドウサイズを「小さい」から「大きい」に変更した
                     ・起動時のコマンドラインに、入力ディレクトリを絶対パスで指定できるようにした
                     ・起動時にカレントディレクトリを実行中の Picmv.exe と同じディレクトリに移動するようにした
                     ・細かい修正
2006.12.27 1.20  ・細かい修正
2007.2.24  1.21  ・「実行後に自動終了」チェックボックスがオンになっているとき従来は常にコピー後に終了確認を求めていたが、次のように仕様変更した。
                   →コピー時のエラーまたはイジェクト失敗がなく正常に処理が終わった場合は、ダイアログボックスを出さずにメッセージを極短時間ブリンク表示させ、そのまま終了するようにした。
2007.4.3   1.22  ・オリエンテーションによる画像回転が「outsize error」で失敗することがあったので修正した
                 ・デフォルト設定を「メモリカードを自動認識させる」に変更した
2007.4.20  1.23  ・命名法定義の後ろから4文字以内が「.」だった場合に常に拡張子と認識し.以降を削除していたが、末尾が「.JPG」だった場合だけ削除するように仕様を変更した。
2007.6.11  1.24  ・ファイルが同一時刻のため名前重複した場合は、元ファイル名でソートするようにした。これによりシリアルナンバの順序を元ファイル名順にさせる。
2007.6.17  1.25  ・ver.1.24 で変更した次の処理がおかしかったので修正した。
                   →ファイルが同一時刻のため名前重複した場合は、元ファイル名でソートするようにした。これによりシリアルナンバの順序を元ファイル名順にさせる。
2007.7.6   1.26  ・メーカー名、モデル名の展開においてファイル名として使用できない文字を削除するようにした。
2007.9.21  1.27  ・命名法に %e と %E を追加した。拡張子を意味する。
                 ・命名法に %p を追加した。マイピクチャを意味する。
2008.7.11  1.30beta1
                 ・2GBytesを超える転送量の場合に表示がおかしくなっていたので修正した
                 ・コマンドライン指定を常に大文字に解釈する問題を修正した
                 ・メモリカード差し込みと同時に取り込み開始する機能を追加した。自動実行チェックボックスオンで機能する。
                 ・命名法に %c を実験的に追加した。実行ごとに値が1ずつ増え、日付をまたぐとクリアされる3桁のカウンタを意味する。
                 ・すでにPicmvが起動しているときにPicmvを起動した場合、すでに起動しているPicmvのウィンドウをアクティブにするようにした
2008.9.24  1.30beta2
                 ・Vistaで終了時に落ちる問題が再現できたので修正した
2009.1.18  1.30
                 ・Exifヘッダのメーカー名が4文字以下の場合に停止していたのを修正した
                 ・ファイル名命名法に:や*が含まれていた場合は_に変更するようにした




●既知のバグ

・EXIF に含まれる撮影日時が 1971 年以前の場合に常に 1971 年と解釈します。
  また 2038 年以降の場合に常に 2038 年と解釈します。
・標準のスクリーンフォントサイズ以外では、サイズ固定のビットマップものとのバランスが崩れます。





●開発環境

Windows2000 Professional / OpenGL
Microsoft VisualC++ 6.0 / MFC / STL
The Independent JPEG Group's JPEG software (C) 1991-1998 Thomas G. Lane

CxIMAGE
         素晴らしく使いやすいグラフィックライブラリ。
         作者の Davide Pizzolato 氏に感謝します。
         http://www.xdp.it/cximage.htm

Inno Setup
         最高のインストーラ・アンインストーラ作成ツール。
         作者の Jordan Russell 氏に感謝します。
         http://www.jrsoftware.org/




●作者

橋本直之 (nyk)
メール: nyk@palette.plala.or.jp
WEB: http://www6.plala.or.jp/nyk

感想、要望などありましたら、是非ご連絡ください。
