Python base64 encoded image

How to use Python 3 to convert your images to Base64 encoding

When you encode your images in Base64, your images can be transferred and saved as text.

Although there will be a 37% bloat in space requirements, it can be useful to encode images in Base64.

For example with SAP HANA XS Advanced, you can quickly build an OData service to receive images via JSON.

Given that, let’s see how we can encode an image in Base64 encoding with Python 3.

Python 3 codes to encode an image in Base64

After you had decided to encode your image in Base64, you can proceed with coding a utility function with Python 3:

import base64 def get_base64_encoded_image(image_path): with open(image_path, "rb") as img_file: return base64.b64encode(img_file.read()).decode('utf-8')

As shown above, it takes just 4 lines of Python 3 codes to encode an image in Base64.

First, we import the base64 module into our Python script.

Once we have done so, we define a function, get_base64_encoded_image , that takes an image path as the parameter.

When we have the image path, we use the open function to get a file object to the image that we wish to encode in Base64.

If we can do so successfully, then we use base64.b64encode on the binary data of the image file.

Before exiting the function, we decode the bytes from base64.b64encode as a UTF-8 string and return it to the caller.

How to display a Base64 encoded image on the browser

Given that you have saved the Base64 encoded image into your database, how can you display it on the browser?

In order to display a Base64 encoded image on the browser, place the Base64 encoded string in the src attribute of an img tag:

 

When you access the above HTML codes with your browser, you will get the following image:

If you wish to display a different type of image, swap the MIME type.

For example, if you wish to display a png image, you will change:

About Clivant

Clivant a.k.a Chai Heng enjoys composing software and building systems to serve people. He owns techcoil.com and hopes that whatever he had written and built so far had benefited people. All views expressed belongs to him and are not representative of the company that he works/worked for.

Источник

Кодирование и декодирование изображений Base64 с помощью Python

Язык программирования Python

Допустим, вам нужно передать по сети бинарный графический файл.

Когда вы это сделаете, вы с удивлением обнаружите, что файл был неправильно принят на другом конце, и что он содержит странные символы. Это происходит потому, что вы пытаетесь отправить файл в формате байтов, в то время как используемый канал предназначен для передачи текста.

Каким должно быть решение, чтобы избежать такой проблемы?

Ответ кроется в кодировке Base64. В этой статье я собираюсь показать, как мы можем использовать Python для кодирования и декодирования двоичного изображения.

Программа, которую мы сегодня создадим, предполагает использование в качестве автономной локальной программы, но вы можете применять ее для различных концепций, таких как отправка закодированного изображения с мобильного устройства на сервер, и многих других приложений.

Что такое кодирование Base64?

Прежде чем перейти к этому, давайте определим, что мы подразумеваем под Base64.

Base64 – это способ, с помощью которого 8-битные двоичные данные кодируются в формат, который можно представить в 7 битах. Для этого используются только символы A-Z, a-z, 0-9, + и / для представления данных. Символ = используется для данных прокладок. Например, при таком кодировании три 8-битных байта превращаются в четыре 7-битных байта.

Термин base 64 происходит от стандарта Multipurpose Internet Mail Extensions (MIME), который широко используется для HTTP и XML, и изначально был разработан для кодирования вложений электронной почты и их правильной передачи.

Для чего мы используем Base64?

Base64 очень важен для отображения двоичных данных, настолько, что позволяет представлять двоичные данные так, что они выглядят и ведут себя как обычный текст. Это делает более безопасным их хранение в базах данных, отправку по электронной почте или использование в текстовых форматах, таких как XML.

Base64 в основном используется для представления данных в формате ASCII.

Как мы уже говорили во введении к этой статье, без Base64 данные вообще не могут быть прочитаны.

Кодирование Base64

Кодирование Base64 – это процесс преобразования двоичных данных в набор символов, ограниченный 64 символами. Как мы уже говорили в первом разделе, это символы A-Z, a-z, 0-9, + и / (Вы посчитали их? Вы заметили, что в сумме они составляют 64?). Этот набор символов считается наиболее распространенным и известен как Base64 в MIME. Он использует A-Z, a-z, 0-9, + и / для первых 62 значений и + и / для последних двух значений.

Закодированные в Base64 данные в итоге оказываются больше исходных данных, поэтому, как мы уже говорили, на каждые 3 байта двоичных данных приходится как минимум 4 байта закодированных в Base64 данных. Это связано с тем, что вы сжимаете данные в меньший набор символов.

Вы когда-нибудь видели необработанный файл электронной почты, подобный тому, который показан ниже? Если да, то вы видели кодирование Base64 в действии.

Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 2KfZhNiz2YTYp9mFINi52YTZitmD2YUg2YjYsdit2YXYqSDYp9mE2YTZhyDZiNio2LHZg9in2KrZ h9iMDQoNCtij2YjYryDZgdmC2Lcg2KfZhNin2LPYqtmB2LPYp9ixINi52YYg2KfZhNmF2YLYsdix 2KfYqiDYp9mE2K/Ysdin2LPZitipINin2YTYqtmKINiq2YbYtdit2YjZhiDYqNmH2Kcg2YTZhdmG INmK2LHZitivINin2YTYqtmI2LPYuSDZgdmKDQrYt9mE2Kgg2KfZhNi52YTZhSDYp9mE2LTYsdi5 2YrYjCDYudmE2YXYpyDYqNij2YbZiiDYutmK2LEg2YXYqtiu2LXYtSDYqNin2YTYudmE2YUg2KfZ hNi02LHYudmKINmI2KPZgdiq2YLYryDZhNmE2YXZhtmH2Kwg2KfZhNi52YTZhdmKDQrZhNiw2YTZ gy4NCg0K2KzYstin2YPZhSDYp9mE2YTZhyDYrtmK2LHYpyDYudmE2Ykg2YbYtdit2YPZhSDZgdmK INmH2LDYpyDYp9mE2LTYo9mGLg0KDQrYudio2K/Yp9mE2LHYrdmF2YYNCg== --089e0141aa264e929a0514593016 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64

Кодирование Base64 выполняется в несколько этапов:

  1. Текст, который необходимо закодировать, преобразуется в соответствующие десятичные значения, т.е. в его ASCII-эквивалент (например, a: 97, b: 98 и т.д.).
  2. Десятичные значения, полученные на предыдущем этапе, преобразуются в их двоичные эквиваленты (т.е. 97: 01100001).
  3. Все двоичные эквиваленты объединяются, в результате чего получается большой набор двоичных чисел.
  4. Большой набор двоичных чисел разделен на равные части. Каждая секция должна содержать только 6 бит.
  5. Равные наборы из 6 битов преобразуются в их десятичные эквиваленты.
  6. Наконец, десятичные эквиваленты преобразуются в свои значения Base 64 (т.е. 4:E).

Декодирование Base64

Декодирование Base64 противоположно кодированию Base64. Другими словами, это делается путем обратных действий, описанных в предыдущем пункте.

Таким образом, этапы декодирования Base64 можно описать следующим образом:

  1. Каждый символ в строке изменяется на его десятичное значение Base64.
  2. Полученные десятичные значения преобразуются в их двоичные эквиваленты.
  3. Первые два бита двоичных чисел усекаются для каждого из полученных двоичных чисел, и наборы из 6 бит объединяются, образуя большую строку двоичных цифр.
  4. Большая строка двоичных цифр, полученная на предыдущем этапе, делится на наборы из 8 бит.
  5. 8-битные двоичные числа преобразуются в их десятичные эквиваленты.
  6. Наконец, полученные десятичные значения преобразуются в их эквиваленты ASCII.

Кодирование изображения

Теперь перейдем к сути дела. В этом разделе я покажу вам, как мы можем легко закодировать изображение в Base64 с помощью Python. Для этого я собираюсь использовать следующий двоичный образ. (Имя файла изображения – deer.gif).

Первое, что нам нужно сделать, чтобы использовать Base64 в Python, – это импортировать модуль Base64:

import base64
Code language: JavaScript (javascript)

Для кодирования нашего изображения в Base64 нужно сделать следующее:

import base64 image = open('deer.gif', 'rb') #открывает двоичный файл в режиме чтения image_read = image.read() image_64_encode = base64.encodestring(image_read)
Code language: PHP (php)

Если вы хотите увидеть результат процесса кодирования, введите следующее:

print image_64_encode
Code language: PHP (php)

Декодирование изображения

Чтобы декодировать изображение с помощью Python, мы просто используем функцию base64.decodestring(s).

Таким образом, чтобы декодировать изображение, которое мы закодировали в предыдущем разделе, делаем следующее:

base64.decodestring(image_64_encode)
Code language: CSS (css)

Собираем все вместе

Давайте соберем код, которая кодирует и декодирует изображение Base64.

import base64 image = open('deer.gif', 'rb') image_read = image.read() image_64_encode = base64.encodestring(image_read) image_64_decode = base64.decodestring(image_64_encode) image_result = open('deer_decode.gif', 'wb') # создание изображения, доступного для записи, и запись результата декодирования image_result.write(image_64_decode)
Code language: PHP (php)

Источник

How to Convert Image to Base64 String in Python

To convert the Image to Base64 String in Python, you can use the “base64.b64encode()” method that provides the b64encode() method. The base64.b64encode() function encodes a string using Base64 and returns that string.

Syntax

base64.b64encode(s[, altchars])

Parameters

s: It is an input and required parameter.

altchars: It must be a string of at least length 2 (additional characters are ignored), which defines the alternative alphabet for the + and / characters.

This enables an application to, for example, generate URL or filesystem-safe Base64 strings. The default is None, for which a standard Base64 alphabet is used.

Return Value

The b64encode() function returns the encoded string.

Example 1: How to convert an Image to base64 in Python

import base64 with open("grayimage.png", "rb") as img_file: b64_string = base64.b64encode(img_file.read()) print(b64_string)

I am getting the long string in the output in the terminal, like the following.

xrfaP11Zcs/PROUWCp7bOF7TZsPuAxAvWmY0EkyUZ+IF49r3aOEYbllIVB7mWkgXr88st9aZVx5+5jE+ ihdEZZFSaVUmJZhGNmVQzOxX7mrT//r2OHpHoQEO+G55O0Hv+kfpBajTeivkc/WbnmWbY6n3T/zZ9TNw TzABCh5vgjOBdpHR4ygIiFXn+s3AHjobVWNQ5BHKVPFwOdFUoozxugdQNpc+CJTX2Vih83Z7xT3FEYNP pMMh/1ff0Ygx350gyQmqaBwfRCPzWcGHlMTDsYx3O2qwx9KNj8dHzcOCM9eGNMYJMDXVZ1veCs2TNawD hiVeUT04hoktMLlgnEK9n1oBMsGfdHK5rQ013Xn7Tjr7xOiv+EHHl2Mhy78TjVRliEQNR3lCxXiAw99G KqVwLW4VUzNWs7EVklYilBVaibIT519HHn1Da9NwpDEJj3YtS7QlqLtcHOLKH9OSgzN5yym/OP5TcR667 /Hub1V/H89Rry0LVMN7yXFg+7kUid8u1ohpBD7cfa4UPbLYCGZRJS+dS6Xz4+//ap6f+mP53Pa1lUp/58G QH2dIKQ0aHTYDy+LA71dxBi/+yFOVQ76AIHqckWXrgP214WqvJVcxTB4MDKdT2khKF+v5IU9xja0HDTNye/ sQ5xvn79XxvtLlCR88lzfDwi6iZj6I+bAkX7DdCznwJ/YH7Evq/b2FtcdXiUVWj10MP4zQO36+QlKc7giHV KfFhypPnyePuLDocQ9o+4bmakPoCFbbz0MT4t7Cg0AkdD29ReLFvgt6kJx34zDUxTMQuRNReLDyM4rbfYsm i7VnCZHLCHuBo0GPcWpp8TlV+9dzt0/503E75OPBtMw8fmSTnAhB/+mXbJV7sq4pRoiBUwQ+deHLveogF4KM DWKPhS3lLPSc2bJxZmn4+gG98yL0eMd9FVU7DZaWM5ASv5tifdfP/2opstI1N8PsSdQYFXc+o/wIB7Eemf8 9oBmy0eZLx07Wx3tV31Do7vCXTPWfq5KoeBEj96+ae9NGrnnn3bhE3+/r+mykBKrcDYBpMY4eFQDzvKT7tF5 QZF02CDacTc5lHqk23K40fH6dK7HnQ+hWw8X/4/RiMehs7bRiTnZ/sfeRHMiB+XXnBIv/Izftgq0urkSsnX8 29z5Ekzcf6lUyP32TcyTg38BLqTsL/d/FtLw5IRMadrrYr99/p2Gs6rbGrGT/ikQnOhVNnLimbbxVLeFS8tdm jVOE0wcmkOvu5nF3/apPPxXgEapMdnaqiKGbilvzadZFg503N+Pjyf/UNvhu7oXayGXKPg/F/zbZ6b0Oelqt 2f/bgOULOh4mSezS55a4pPLYdFCYi0sLtb3nwukE6J20uCqAfvretNh0+xyFpHt6j/+waFfxcDxzR1s4vY1D dGTn/GVld9rr2Udrf6pN4He6cMWQsw2Ow9fwzl6Og/tk7ZxVa/+h/+9z++2j73iJyXQ+ac+nJy7tinATA6y XOP9RTl8rJbTI/p69m3lsjWkqaTAXj49XV3zil73n4Y4pP6vjHdavM7+vk7MiwuGEZRtJa0KTQeu72y2EIC g9k83B7KAcGB9CVAZf8iiK9mxee7P3Qao3L+r/p3DYiXJ8t/SqtghnnP0sZQvr+bUtJtDpo9TAJUELKS0Es 3aPJ6nxVHuuwzt9pkynpqfqxcs4uncJBN0zcpMLrofEGBRWz2HNXO0J57woQfpXc1GHd1vTN4T2c8JtwBhj JC7pB7tn2MJ0/lpf+QWuCzMoUGMupPsAIj1x7y+ViO2aFxlP3qH+LLZJcv++B0kzYwmag38ljr9vudS2ZuKe c3utBQ4E/PZLSRViNSnP3CSep/KhS1HWWKerK3xvL/Hzydrveh+QnLAAAAAElFTkSuQmCC'

Your string has been printed. But in the starting position of your base64 string, there is a b’.

Or you can say your base64 encoded string is in the pair of single quotations.

To remove b’ from the prefix of base64 code in Python, you can use string.encode(‘utf-8’) method.

import base64 with open("grayimage.png", "rb") as img_file: b64_string = base64.b64encode(img_file.read()) print(b64_string.decode('utf-8'))

Источник

Читайте также:  Find string with javascript
Оцените статью