Hướng dẫn convert data uri to image python - chuyển đổi dữ liệu uri sang hình ảnh python

Không có gì trong stdlib để phân tích data: uris ngoài việc rút ra path. Nhưng không khó để phân tích phần còn lại. Ví dụ:

import urllib.parse

up = urllib.parse.urlparse(url)
head, data = up.path.split(',', 1)
bits = head.split(';')
mime_type = bits[0] if bits[0] else 'text/plain'
charset, b64 = 'ASCII', False
for bit in bits:
    if bit.startswith('charset='):
        charset = bit[8:]
    elif bit == 'base64':
        b64 = True

# Do something smart with charset and b64 instead of assuming
plaindata = data.decode("base64")

# Do something smart with mime_type
with open('spam.jpg', 'wb') as f:
    f.write(plaindata)

(Đối với Python 2.x, chỉ cần thay đổi urllib.parse thành urlparse.)

Lưu ý rằng tôi không sử dụng PIL chút nào. Bạn không cần PIL để lưu dữ liệu hình ảnh thô vào một tệp. Nếu bạn muốn tạo một đối tượng Image từ nó trước, ví dụ: để thực hiện một số xử lý hậu kỳ, tất nhiên bạn có thể, nhưng nó không liên quan đến câu hỏi của bạn.

Hướng dẫn convert data uri to image python - chuyển đổi dữ liệu uri sang hình ảnh python

printimg_to_data (đường dẫn)

Ngoại trừfilenotfounderror:

In không tìm thấy! '

$ pip install python-datauri

sys.exit (2)

>>> 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.'

Thao tác URI dữ liệu được thực hiện dễ dàng.DataURI.data will always return bytes, (which in Python 2 is the same as a string). Use DataURI.text to get a string.

Điều này rất mạnh mẽ và sẽ từ chối một số URI dữ liệu hợp lệ. Tuy nhiên, nó đáp ứng trường hợp hữu ích nhất: Mimetype, Charset và Cờ Base64.

>>> 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.'

Cài đặt

Phân tích cú pháp

>>> from datauri import DataURI
>>> png_uri = DataURI.from_file('somefile.png')
>>> png_uri.mimetype
'image/png'
>>> png_uri.data
b'\x89PNG\r\n...'

Lưu ý rằng datauri.data sẽ luôn trả về byte, (trong Python 2 giống như một chuỗi). Sử dụng DataUri.Text để có được một chuỗi.

Tạo từ một chuỗi

Tạo từ một tệp

Đây thực sự chỉ là một phương pháp tiện lợi.

Giấy phép

Mã này được phát hành theo Unlicense.
Tín dụng
Đây là một bản đóng gói lại của chính ý chính này được viết bởi Zachary Voase.
importbase64 base64
Nhập khẩu mimetypes
Nhập khẩu os
Nhập khẩu sys
classfilenotfounderror (ngoại lệ): FileNotFoundError(Exception):
đi qua
demimg_to_data (đường dẫn): img_to_data(path):
"" "Chuyển đổi một tệp (được chỉ định bởi một đường dẫn) thành URI dữ liệu." ""
ifnotos.path.exists (đường dẫn): not os.path.exists(path):
RAISEFILENOTFOUNDROR FileNotFoundError
mime, _ = mimetypes.guess_type (đường dẫn), _ = mimetypes.guess_type(path)
withopen (đường dẫn, 'rb') ASFP: open(path, 'rb') as fp:
data = fp.read () = fp.read()
data64 = u ''. Tham gia (base64.encodestring (dữ liệu) .splitlines ()) = u''.join(base64.encodestring(data).splitlines())
returnu'data:%s; base64,%s '%(mime, data64) u'data:%s;base64,%s' % (mime, data64)
defusage (argv): usage(argv):
print'Usage: %s ' %argv [0] 'Usage: %s ' % argv[0]
if__name __ == '__ main__': __name__ == '__main__':
thử::
path = sys.argv [1] = sys.argv[1]
ngoại trừ Indindexerror: IndexError:
sử dụng (sys.argv)(sys.argv)
sys.exit (1).exit(1)
thử::
path = sys.argv [1] img_to_data(path)
ngoại trừ Indindexerror: FileNotFoundError:
sử dụng (sys.argv) 'File not found!'
sys.exit (1).exit(2)