=================================================
ソフト名       ：PANDA重複画像削除ソフト
バージョン    ： 1.1.8
動作環境     ： Windows11、W Windows10、Windows8、、Winodows7
ライセンス   　 ：フリーソフト。
必要なランタイムなど ：.net framework、NtfsReader.dll　、CoenM.ImageHash
サポートurl 
https://shimarisu.ie-t.net/
=================================================
■このソフトの説明

ローカルPC上の類似画像ファイルを検出して削除するソフトです。
解像度やサイズなどが異なっても同じ画像なら重複検出できます。
画像ファイル専用です。

私が作った「PANDA重複ファイル削除ソフト」の方は全く同じファイルしか検出しません。
ファイルサイズや解像度が異なる画像ファイルは検出できないのです。

ですが、このソフトを使えば、
ファイルサイズや解像度が異なっても同じ画像ファイルならば、
重複を検出できます。
例えばサムネイル画像と大きい画像があって、
最大の画像だけを残してサムネイル画像を一括で削除したい場合などに使える。

1.異なるサイズや解像度の画像でも重複を検出できる。
2.ファイルやフォルダをドラッグ&ドロップにより入力できる。
(複数可）
今までに取得したフォルダをテキストファイルに書き出し
再登録する時にコンボボックスで選択で登録もできる。
3.重複検出した場合、最大サイズのファイルを残すか、
最小サイズのファイルを残るか、最大解像度のファイルを残すか、
最小解像度のファイルを残るか、日付が古いファイルを残すか、
新しいファイルを残すかの選択ができる。
4.重複検出するとテーブルに名前、フルパス、日付、ハッシュ、サイズが表示されて、
重複一覧が並ぶのでので本当に重複ファイルかどうかが分かりやすい。
削除するファイルはチェックしてあり、
残すファイルはチェックは無いので、
確認してから「削除」ボタンで一括削除できる。
削除してもゴミ箱に入るので取り消しは可能。
5.mftを使ってドライブを一括チェックもできる。
5.画像のハッシュ取得アルゴリズムはahash、dhash、phashの三種類ある。
6.並列処理によりマルチコアCPUで高速化できる。

■使い方
PANDA類似画像削除ソフト.exeを起動します。

登録するには、
メインタブに画像ファイルが入ったフォルダか画像トファイルを
ドラッグ&ドロップします。
（複数可。テーブルタブD&Dでも良い。）

このソフトは画像ファイルかどうかの識別を拡張子でします。
設定2タブの「取得する画像の拡張子(正規表現)」に取得する画像を正規表現で入れます。
デフォルトは(jpg|png|jpeg|gif|webp)。
例えばgifを外すなら(jpg|png|jpeg|webp)。
例えばgifとpngを外すなら(jpg|jpeg|webp)。



サブフォルダも取得します。

「開く」ボタンはクリックするとダイアログが出るので、
フォルダを選択するとそのフォルダを登録します。

一度登録するとfolder.txtに書き出されます。
起動時にfolder.txtをコンボボックスに読み込みます。
「folder.txtを一括で取得」チェックを外して、
コンボボックスを選択して「開始ボタン」を押すと、
そのフォルダを取得できます。
（再取得する場合に、D&Dするのが面倒なら、
コンボボックスで選択できる機能です。）

「folder.txtを一括で取得」チェックを入れると、
folder.txtに書かれたフォルダ内のファイルを全て一括で登録します。

取得する画像形式はjpg、png、gif、bmpだけです。
ファイルの拡張子で判別します。

「フォルダ内のファイル取得方法」はフォルダ内のファイルの取得方法でうｓ．
「System.IO.Directory.GetFiles」をチェックすると、
System.IO.Directory.GetFilesで取得します。
「 Directory.EnumerateFiles」をチェックすると、
Directory.EnumerateFilesで取得します。
「dirコマンド」をチェックすると、
dirコマンドで取得した文字列からファイルパスを取得して
ファイルを取得します。
（サブフォルダも含む。
dirコマンドには/s /bオプションを付けてます。）
どれを選択しても作業時間は大して変わらないです。
どれでも良いです。

「Directory.GetFilesで拡張子指定する」をチェックすると、
Directory.GetFilesで拡張子指定して指定拡張子のファイルのみを取得します。
異なる拡張子を取得しないので早くなります。
jpgを取得しようと思ったら「*.jpg」になります。
「.jpg」ではないので注意。
また、複数の拡張子を指定できないので注意。
一つの拡張子しか指定できません。
「 Directory.EnumerateFiles」や「dirコマンド」をチェックした場合でもこの設定は適用されます。

登録できなくなった場合は
「Directory.GetFilesで拡張子指定する」を外して見ると良いです。

「取得したフォルダをテキストに書き出す」チェックは
チェックすると、取得したフォルダをfolder.txtに書き出します。


[プログレスバー]チェックは有効にするとプログレスバーが表示されます。

[アニメ]チェックは有効にすると登録時に回転するアニメのアイコンが表示されます。


 [日付の設定]は日付が更新日か最終アクセス日か作成日かの設定です。

重複チェックに使うハッシュはPerceptual Hashです。

[削除対象]で[サイズが大きいのを残す]をチェックすると。
最大サイズの画像を残して他の小さいサイズを削除します。
[削除対象]で[サイズが小さいのを残す]をチェックすると。
最小サイズの画像を残して他の大きいサイズを削除します。
[削除対象]で[日付が古いのを残す]をチェックすると。
日付が一番古い画像を残して他の画像を削除します。
[削除対象]で[日付が新しいを残す]をチェックすると。
日付が一番新しい画像を残して画像を削除します。

[削除対象]で[解像度が高いのを残す]をチェックすると。
画像の解像度が一番高いのを残して画像を削除します。
[削除対象]で[解像度が低いのを残す]をチェックすると。
画像の解像度が一番低いのを残して画像を削除します。
（この解像度はwidth（横幅）の方だけです。
height（縦幅）は関係無いです。)

「PANDA重複ファイル削除ソフト」と違って全ての画像ファイルのハッシュを
計算するので時間が掛かるので注意。

このソフトは拡張子で画像かどうか判断して
画像のみを追加します。
対応する画像の拡張子はjpg、jpeg、png、gif、bmpです。

■正規表現で削除ファイルを選択する機能


日付の新しいか古いか以外にファイル名で
削除対象を判定する機能をつけた。

設定2の「削除対象」の
「正規表現にヒットしたファイルを残す」をチェックすると、
正規表現にヒットしたファイルを残す。
「正規表現にヒットしたファイルを削除」をチェックすると、
正規表現にヒットしたファイルを残す。

「削除対象のファイル名(パス)の正規表現」に正規表現を設定する。

正規表現の対象のテキストはファイル名とファイルのパスです。
ファイル名だけでなくフォルダ名でもできます。

例えば、ファイル名が
G0SoaplbsAAJBTk.jpg
1982358197408268339_1.jpg
の同じファイルがあるとして、

[0-9]+_[0-9]+.jpgを入れて、
「正規表現にヒットしたファイルを残す」をチェックすれば、
G0SoaplbsAAJBTk.jpgが削除される。
「正規表現にヒットしたファイルを削除す」をチェックすれば、
1982358197408268339_1.jpgが削除される。

■[削除でゴミ箱を使わない]チェックについて

[削除でゴミ箱を使わない]チェックすると
削除する時にゴミ箱に入れません。

ゴミ箱を使わない方が削除が早いです。
大量に削除する場合に有効にすると良いです。

ゴミ箱を使うとメモリの消費が激しく増えるみたいです。


■アルゴリズムについて

画像のハッシュ取得のアルゴリズムを
メインタブの「アルゴリズム」で設定できます。

aHash(Average Hash)
    画像の平均輝度からの差分を使った方法。

pHash（Perceptive Hash） 
    DCTを適用してハッシュ値を算出
dHash(Difference Hash)
    隣接領域との差分を使った方法。


■画像の解像度

画像の解像度の取得はGetDetailsOfで取得してる。
windows10なら問題ない。
GetDetailsOfはwindowsのバージョンによって
取得する番号が変わってくる。

ググって分からなかったので、
vistaでは取得しない。

■[サイズや時間の取得でGetDetailsOfを使う]チェックについて

問題なければチェック入れとけば良いです。

[サイズや時間の取得でGetDetailsOfを使う]をチェックすると、
ファイルのサイズをGetDetailsOfで取得する。
どうなるかというと、
50.5kや20.2Mなどサイズの表示が分かりやすくなる。

[サイズや時間の取得でGetDetailsOfを使う]チェックを外すと
バイト単位での表示になる。

サイズを表示出来ない場合はチェックを外してください。

■ドライブを一括チェックする機能

この機能は管理者権限が必要です。
管理者権限で起動してください。
（管理者権限で起動した場合はD&D機能は使えないみたいです。）

[開始で実行する機能の設定]で[ドライブを選択]をチェック。

メインタブの「入力ドライブ名」に入力ドライブ名を入れます。
Cを入れれば良いと思います。。
デフォルトはC。
C:\のような:\は不要なので注意。
アルファベット一文字のみを入れてください。
大文字小文字はどちらでも良いです。

[開始]ボタンで開始されます。

HDDのファイル数によってはそうとう時間がかかるので注意。

[ドライブの一括取得でリミット数以上を取得しない]チェックは
チェックすると、[ドライブを選択]した場合で、
取得ファイル数にリミットを付けて途中で終了します。
[ドライブの一括取得で取得リミット数]にリミット数を入れます。
時間がかかるので途中までで良いのでやってみたいって人は
チェックすると良いです。

[プログレスバーを更新する間隔]はプログレスバーを更新する間隔です。
適用されるのはドライブ取得で最初のファイル取得の時のみです。
間隔は[件に一度更新]のとこに入れます。
ファイルが多すぎると、プログレスバーの更新が多すぎて
時間がかかるのでつけた。
デフォルトは10000。
10000だと1万件に一度、プログレスバーを更新します。
ファイル数が少ないHDDだと、もっと数値を小さくしないといけないです。
数値が小さすぎると登録作業が遅くなるので注意。
自分で調節してください。
この設定はドライブ取得のみです。
[コンボボックスの選択]やドラッグ&ドロップの入力では適用されません。
一つのファイルずつプログレスバーが更新されます。

「PANDA重複ファイル削除ソフト」と違って全ての画像ファイルのハッシュを
計算するので時間が掛かるので注意。


■削除テーブル
重複が検出されると
[テーブル]タブに入ります。
「削除」ボタンを押すとチェックされたファイルが一括削除されます。

削除したファイルはゴミ箱に入ります。

「移動」ボタンは押すと
「移動先フォルダ」に移動します。
 （「移動先フォルダ」が存在しない場合は何もしない。）

「開く」ボタンで「移動先フォルダ」を開ける。
「貼る」ボタンで「移動先フォルダ」のパスの貼り付けができる。


「コピー」ボタンは押すと
「移動先フォルダ」にコピーされます。
 （「移動先フォルダ」が存在しない場合は何もしない。）

[選択を反転]ボタンは押すとチェックを反転させます。

[削除対象]で[日付が古いのを残す]にチェックすると、
ファイルの日付が新しいのを削除して一番古いファイルを残します。
[日付が新しいのを残す]にチェックすると、
ファイルの日付が古いのを削除して一番新しいファイルを残します。

[日付の設定]で重複チェックに使う日付を何にするか設定できます。
[最終更新日]。[最終アクセス日]、[作成日]  のどれかを選択できます。

 [削除ログ]は削除したファイルのログです。
delete_log.txtに削除したファイルのパスが入ります。

[1日以上前の古いファイルを削除しない] は間違って削除しないための安全装置です。
チェックすると、ファイルの日付を確認して1日以上前の古いファイルは削除しません。
通常、重複チェックして削除するのは、
ダウンロードしてフォルダに入れた新しいファイルの方だと思うので
この機能を付けた。
チェックを外せば古いファイルも削除出来ます。

 テーブルサイズはフォームのサイズに合わして
ある程度、縦に可変します。


■誤検出について

誤検出は場合によってはありえます。
このソフトはファイルのハッシュで完全一致を抽出してるのでなく
画像を分析して100%の類似画像の抽出なので。

例えばエロゲーの表情違いの画像を識別するのには向いて無いと思います。
背景と人物の画像が全く同じで顔の表情の小さい部分だけが異なると、
画像の大部分が完全に一致してるので識別しにくいのではないかと思います。

このソフトはサイズ違いの同一画像を除去するのが目的です。
サイズ違いの同一画像除去するのでないなら
PANDA重複ファイル削除ソフトのがおすすめです。
PANDA重複ファイル削除ソフトのが処理が早いですし。

PANDA重複ファイル削除ソフト
https://shimarisu.ie-t.net//dup_delete.html

■並列処理について

画像のハッシュを取得する処理を
Parallelにより並列処理で行えます。
これによりコア数の多いCPUだとより高速化できます。

設定2の「並列処理」をチェックで有効。
「スレッド数」にスレッド数を入れる。
スレッド数がいくつが良いかは自分で色々試してください。
CPUのコア数よりは少なくした方が良いかと思います。
あまり多くしても微差しか早くならないです。

参考までに
私のPCでの取得テスト結果。
取得ファイル数：1768でのテスト結果。

並列処理無効：27秒
2スレッド:16秒
3スレッド：12秒
4スレッド：10秒
5スレッド：9秒
5スレッド：10秒
6スレッド：9秒
7スレッド：8秒
8スレッド:8秒
9スレッド:8秒
10スレッド:7秒

「ハッシュを取得します。」と出た後の処理が並列処理です。
「取得したデータを整理します。」の後の処理は並列処理ではないです。

■複数フォルダをチェックする機能

2つの方法があります。

[開始で実行する機能の設定]で[複数フォルダ(folder.txt)]をチェックして
「開始」ボタンを押した場合、
folder.txtに書かれたフォルダを複数のフォルダを一括チェックします。

[開始で実行する機能の設定]で[複数フォルダ(テキストボックス)]をチェックして
「入力フォルダ」タブに複数のフォルダをD&Dします。
「開始」ボタンで一括チェックします。
■テーブルを保存する機能

テーブルに入った状態で「保存」ボタンを押すとテーブルを保存できます。
「テーブル保存設定」でCSVかJSONかを設定できます。

「保存ファイル名」で保存されるファイル名を設定できます。
(拡張子不要）

「保存ファイル名」が空の場合は日付と時間のファイル名で保存される。




■ライブラリ

CoenM.ImageHash
NtfsReader.dll



■32bit版について

「32bit版」フォルダに32bit版のexeファイルがあるので、
32bit版のwindowsの人は実行ファイルを入れ替えてください。

64bit版のwindowsの人は32bit版のexeを使う必要はないです。
（処理が遅くなるだけ。）

■動作環境
windows11、windows10、windows8、Windows7 (32bit&64bit)

■インストール
任意のフォルダに圧縮ファイルを展開してください。

■アンインストール
レジストリは一切使っていないでの、
ゴミ箱に捨てれば良いです。

★更新履歴
2026/1/18
ver 1.1.8
2026/1/17
ver 1.1.7
CSVやJSONでテーブルを保存できる機能。

2026/1/17
ver 1.1.6
複数フォルダをチェックできる機能
2026/1/15
ver 1.1.5
正規表現でヒットしたファイルを削除したり、
正規表現でヒットしたファイルを残す機能。
2024/2/23
ver 1.1.4
スレッドの差が分かりやすいように計測時間をミリ秒まで表示するようにする。
2024/2/22
ver 1.1.3
久しぶりに更新。.net framework4.7.2になる。
並列処理機能。画像と認識する拡張子を正規表現で設定する機能。
2021/2/15
ver 1.1.2
テーブルタブでウインドウを下にスクロールすると
テーブル(datagridview)が下に伸びる設定にした。

2021/2/9
ver 1.1.1
2021/2/3
ver 1.0.8
CoenM.ImageSharp.ImageHash.dllなどのdllを更新。
削除でプログレスバー。
ゴミ箱に入れずに削除できる機能。
2020/3/26
ver 1.0.7
2020/2/24
ver 1.0.6
2020/2/23
ver 1.0.5
アルゴリズムの設定。phashやdhashで取得できるようにする。
2020/2/13
ver 1.0.4
2020/1/13
ver 1.0.3
サイズ表示を分かりやすくする。
2020/1/12
ver 1.0.2
[PANDA類似画像削除ソフト]から[PANDA重複画像削除ソフト]に改名。
画像の解像度を表示する機能。
ファイルを削除でなく移動やコピーする機能。
解像度が高い画像を残す機能。
2019/12/22
ver 1.0.1
画像以外も取得してた問題を修正。
2019/12/21
不要なライブラリを削除
2019/12/21
ver 1.0.0
初公開
