用于Python的Numba感知的BlurHash编解码器实现
blurhash-numba的Python项目详细描述
blurhash numba:最快的python3blurhash实现,由numba提供支持
什么是BlurHash?在
BlurHash是图像占位符的紧凑表示。在
BlurHash编码器使用图像,并提供短字符串(仅20-30个字符!)表示图像占位符的。您可以在服务的后端执行此操作,并将字符串与图像一起存储。当您向任何客户机发送数据时,您同时发送指向图像的URL和BlurHash字符串。然后,您的客户机接收字符串,并将其解码为一个图像,该图像在通过网络加载时显示。字符串足够短,可以轻松地适应您使用的任何数据格式。例如,可以很容易地将其添加为JSON对象中的字段。在
总而言之:
在
阅读更多关于算法here。在
安装
您可以使用pip3安装blurhash-numba
$ pip3 install blurhash-numba
如果还没有安装,Pillow
(PIL)和{
使用
编码
Asblurhash_numba.encode
接受numpy
数组形式的图像。您可以使用Pillow
python库转换图像文件。在
fromblurhash_numbaimportencodefromPILimportImageimportnumpyasnpimage=Image.open("256.jpg")
image
image_array=np.array(image.convert("RGB"),dtype=np.float)blurhash_code=encode(image_array,x_components=4,y_components=3)
blurhash_code
'LtL#LZR*x]jG.TRkoeayIUofM{R*'
y_components
和x_components
参数调整
哈希图像中的垂直和水平AC分量。两个参数必须
是>= 1
和{
解码
fromblurhash_numbaimportdecodefromPILimportImageimportnumpyasnpblur_img=Image.fromarray(np.array(decode(blur_hash,256,256)).astype('uint8'))
blur_img
测试
在虚拟环境中使用pytest
运行测试套件
$ pytest
常见问题解答
我为什么要用blurhash numba?在
这是目前Python中BlurHash算法(编码和解码)的最快实现,因为它使用numba
直接将Python+NumPy代码转换为快速机器代码。它比halcy/blurhash-python快30-70倍,比woltapp/blurhash快2-4倍。在
如何选择X和Y分量的数量?在
这有点取决于口味。选择的组件越多,占位符中保留的信息就越多,但是BlurHash字符串的长度就越长。而且,它并不总是有太多的组件好看。我们通常是4乘3,这似乎达到了一个很好的平衡。在
但是,您应该根据图像的纵横比调整组件的数量。例如,非常宽的图像应该有更多的X分量和更少的Y分量。在
这个实现中的punch
参数是什么?在
它是一个调整解码图像对比度的参数。1表示正常,较小的值将使效果更微妙,而较大的值将使效果更强。这基本上是一个设计参数,可以用来调整外观。在
从技术上讲,它的作用是放大或缩小交流元件的比例。在
学分
此项目基于halcy/blurhash-python的纯python BlurHash实现。
另外,由woltapp/blurhash提供的原始实现也是值得赞扬的。在
- 项目
标签: