python 将phash得到的64位数据转换成BIGINT方便存储到数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 将phash得到的64位数据转换成BIGINT方便存储到数据库相关的知识,希望对你有一定的参考价值。

from PIL import Image
import imagehash


def get_phash(file_path):
    img = Image.open(file_path)
    phash = imagehash.phash(img).hash.flatten()
    phash_list = list(map(bool, phash))

    if phash_list[0] is True:
        # 取反
        for k, v in enumerate(phash_list):
            if k == 0:
                continue
            phash_list[k] = not v

        ret = []
        add = 1
        for i in phash_list[1:][::-1]:
            if i + add > 1:
                ret.append(0)
                add = 1
            else:
                ret.append(i + add)
                add = 0
        return sum((2 ** k) * v for k, v in enumerate(ret)) * -1
    return sum((2 ** k) * v for k, v in enumerate(phash_list[::-1]))

以上是关于python 将phash得到的64位数据转换成BIGINT方便存储到数据库的主要内容,如果未能解决你的问题,请参考以下文章

将十进制数表示成ieee754标准的32浮点规格化数 27/64

将 iOS 应用程序转换为 64 位架构得到错误和警告

python 集中基本数据类型

C语言如何将64位整数转字符串

Python数据类型

感知哈希算法