MW211 EXIT

devlog
PHP/画像ファイル名のハッシュ化
2018年09月12日
画像ファイルの中身からハッシュ値(SHA1(40文字))を変換して
(コピーして)それをファイル名にするPHPプログラム。
┌──────────────────────────────────────┐
│$input = 'C:\…\ファイル.jpg';                                              │
│$path_parts = pathinfo($input);                                             │
│$output = $path_parts['dirname']                                            │
│        . '\\' . hash_file('sha1', $input)                                  │
│        . '.'  . $path_parts['extension'];                                  │
│if (!copy($input, $output)) {                                               │
│    echo 'コピー失敗(' . $input . ')';                                      │
│}                                                                           │
└──────────────────────────────────────┘
中身が同じであれば同じファイル名となるため、名寄せができる。

ディレクトリ内のすべてのファイルを対象とする場合は以下のような感じ。
┌──────────────────────────────────────┐
│$dir = 'C:\…\ディレクトリ名';                                              │
│main($dir);                                                                 │
│exit();                                                                     │
├──────────────────────────────────────┤
│function main($dir) {                                                       │
│    foreach (glob($dir . '\\*') as $value) {                                │
│        $path_parts = pathinfo($value);                                     │
│        $output = $path_parts['dirname']                                    │
│                . '\\' . hash_file('sha1', $value)                          │
│                . '.'  . $path_parts['extension'];                          │
│        $utf8 = mb_convert_encoding($path_parts['filename'], 'utf-8', 'sjis');
│        if ($output === $value) {                                           │
│            echo 'スキップ(' . $utf8 . ')' . "\n";                          │
│        } else {                                                            │
│            if (copy($value, $output)) {                                    │
│                echo '成功(' . $utf8 . ')' . "\n";                          │
│            } else {                                                        │
│                echo '失敗(' . $utf8 . ')' . "\n";                          │
│            }                                                               │
│        }                                                                   │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP