Add blurhash code
This commit is contained in:
parent
35c43562dd
commit
bf61d4881e
3 changed files with 40 additions and 3 deletions
|
@ -25,6 +25,7 @@ from cryptography.hazmat.primitives.asymmetric import ec
|
|||
import http_ece
|
||||
import base64
|
||||
import json
|
||||
import blurhash
|
||||
|
||||
try:
|
||||
from urllib.parse import urlparse
|
||||
|
@ -2315,7 +2316,42 @@ class Mastodon:
|
|||
)
|
||||
|
||||
return json.loads(decrypted.decode('utf-8'), object_hook = Mastodon.__json_hooks)
|
||||
|
||||
|
||||
###
|
||||
# Blurhash utilities
|
||||
###
|
||||
def decode_blurhash(self, media_dict, out_size = (16, 16), size_per_component = True, return_linear = True):
|
||||
"""
|
||||
Basic media-dict blurhash decoding.
|
||||
|
||||
out_size is the desired result size in pixels, either absolute or per blurhash
|
||||
component (this is the default).
|
||||
|
||||
By default, this function will return the image as linear RGB, ready for further
|
||||
scaling operations. If you want to display the image directly, set return_linear
|
||||
to False.
|
||||
|
||||
Returns the decoded blurhash image as a three-dimensional list: [height][width][3],
|
||||
with the last dimension being RGB colours.
|
||||
|
||||
For further info and tips for advanced usage, refer to the documentation for the
|
||||
blurhash module: https://github.com/halcy/blurhash-python
|
||||
"""
|
||||
# Figure out what size to decode to
|
||||
decode_components_x, decode_components_y = blurhash.components(media_dict["blurhash"])
|
||||
if size_per_component == False:
|
||||
decode_size_x = out_size[0]
|
||||
decode_size_y = out_size[1]
|
||||
else:
|
||||
decode_size_x = decode_components_x * out_size[0]
|
||||
decode_size_y = decode_components_y * out_size[1]
|
||||
|
||||
# Decode
|
||||
decoded_image = blurhash.decode(media_dict["blurhash"], decode_size_x, decode_size_y, linear = return_linear)
|
||||
|
||||
# And that's pretty much it.
|
||||
return decoded_image
|
||||
|
||||
###
|
||||
# Pagination
|
||||
###
|
||||
|
|
3
setup.py
3
setup.py
|
@ -17,7 +17,8 @@ setup(name='Mastodon.py',
|
|||
'python-magic',
|
||||
'decorator>=4.0.0',
|
||||
'http_ece>=1.0.5',
|
||||
'cryptography>=1.6.0'
|
||||
'cryptography>=1.6.0',
|
||||
'blurhash>=1.1.0',
|
||||
],
|
||||
tests_require=test_deps,
|
||||
extras_require=extras,
|
||||
|
|
|
@ -66,4 +66,4 @@ def test_push_delete(api):
|
|||
|
||||
api.push_subscription_delete()
|
||||
with pytest.raises(MastodonNotFoundError):
|
||||
api.push_subscription()
|
||||
api.push_subscription()
|
||||
|
|
Loading…
Reference in a new issue