28 lines
589 B
Python
28 lines
589 B
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
|
|
import imagehash
|
|
from PIL import Image
|
|
|
|
|
|
def bin_str(hash):
|
|
return ''.join(str(b) for b in 1 * hash.hash.flatten())
|
|
|
|
|
|
def main(args: list[str] | None = None) -> str:
|
|
ap = argparse.ArgumentParser()
|
|
ap.add_argument('-file', required=True)
|
|
opts = ap.parse_args(args)
|
|
im = Image.open(opts.file)
|
|
|
|
return (
|
|
f'ahash: {bin_str(imagehash.average_hash(im))}\n'
|
|
f'dhash: {bin_str(imagehash.dhash(im))}\n'
|
|
f'phash: {bin_str(imagehash.phash(im))}'
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print(main())
|