https://github.com/fcurella/python-datauri
Data URI manipulation made easy.
https://github.com/fcurella/python-datauri
data-uri python
Last synced: about 1 year ago
JSON representation
Data URI manipulation made easy.
- Host: GitHub
- URL: https://github.com/fcurella/python-datauri
- Owner: fcurella
- License: unlicense
- Created: 2017-06-16T17:02:18.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2025-01-03T16:42:46.000Z (over 1 year ago)
- Last Synced: 2025-04-13T08:24:56.700Z (about 1 year ago)
- Topics: data-uri, python
- Language: Python
- Homepage:
- Size: 178 KB
- Stars: 55
- Watchers: 2
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
DataURI
=======
.. image:: https://github.com/fcurella/python-datauri/workflows/Python%20Tests/badge.svg
:target: https://github.com/fcurella/python-datauri/actions?query=workflow%3A%22Python+Tests%22
:alt: Build status of the master branch on Mac/Linux
.. image:: https://coveralls.io/repos/github/fcurella/python-datauri/badge.svg?branch=master
:target: https://coveralls.io/github/fcurella/python-datauri?branch=master
Data URI manipulation made easy.
This isn't very robust, and will reject a number of valid data URIs. However, it meets the most useful case: a mimetype, a charset, and the base64 flag.
Installation
------------
.. code-block:: bash
$ pip install python-datauri
Parsing
-------
.. code-block:: python
>>> from datauri import DataURI
>>> uri = DataURI('data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')
>>> uri.mimetype
'text/plain'
>>> uri.charset
'utf-8'
>>> uri.is_base64
True
>>> uri.data
b'The quick brown fox jumped over the lazy dog.'
Note that ``DataURI.data`` will always return bytes.
Use ``DataURI.text`` to get a string.
Creating from a string
----------------------
.. code-block:: python
>>> from datauri import DataURI
>>> made = DataURI.make('text/plain', charset='us-ascii', base64=True, data='This is a message.')
>>> made
DataURI('data:text/plain;charset=us-ascii;base64,VGhpcyBpcyBhIG1lc3NhZ2Uu')
>>> made.data
b'This is a message.'
Creating from a file
--------------------
This is really just a convenience method.
.. code-block:: python
>>> from datauri import DataURI
>>> png_uri = DataURI.from_file('somefile.png')
>>> png_uri.mimetype
'image/png'
>>> png_uri.data
b'\x89PNG\r\n...'
Serializing
-----------
`DataURI` is a subclass of `str`, so you can just use `str()` to print it out:
.. code-block:: python
>>> from datauri import DataURI
>>> png_uri = DataURI.from_file('somefile.png')
>>> str(png_uri)
'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIA...'
Pydantic Support
----------------
You can use `DataURI` as a type for `Pydantic`:
.. code-block:: python
from datauri import DataURI
from pydantic import BaseModel
class ProfilePicture(BaseModel):
image_data: DataURI
License
-------
This code is released under the `Unlicense `_.
Credits
-------
This is a repackaging of `this Gist `_
originally written by `Zachary Voase `_.