TGViewer
Python Заметки Python Заметки @pythonotes · 2.2K subscribers
Post #103 623
Как сохранить картинку непосредственно в Python-модуль?
Для этого нам пригодится библиотека base64.
Этот способ кодирование позволяет любые бинарные или текстовые данные закодировать с помощью 64 ASCII символов. То есть получится простая строка.

Зачем это вообще?

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

Например:
- встроить в URL в GET запрос как параметр
- встроить в тело email
- сохранить в Python-модуль как переменную
- сохранить любой конфиг, например JSON
- записать в базу данных
- зашить в HTML (XML) или CSS

Чаще всего так кодируют изображения в HTML и в CSS. Есть даже специальные сервисы для кодирование изображений.

Давайте закодируем и декодируем картинку.

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

>>> import base64
>>> src_path = 'image1.png'
>>> with open(src_path, 'rb') as f:
>>> raw_data = f.read()
>>> image_encoded = base64.encodebytes(raw_data)
>>> print(image_encoded)
b'iVBORw...Jggg==\n'

Теперь наша картинка это просто байты в переменной. Её можно сохранить непосредственно в модуле и использовать позже.

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

>>> save_path = "image2.png"
>>> raw_data = base64.decodebytes(image_encoded)
>>> with open(save_path, 'wb') as f:
>>> f.write(raw_data)

Картинка восстановлена обратно в файл.

Стоит помнить что:

- это не шифрование, пароли так не стоит прятать. Строка легко декодируется в исходник.
- размер данных после кодирования увеличивается примерно на четверть
- не храните изображения в базе данных таким способом!

#libs #tricks
Wikipedia Base64 позиционная система записи чисел
More from @pythonotes
  1. Sep 21, 2026­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в б…
  2. Aug 17, 2026Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без п…
  3. Jul 20, 2026У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Соби…
  4. Jul 13, 2026В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно под…
  5. Jul 6, 2026Модуль pwd может использоваться для считывания информации о пользователях из базы данных п…
  6. Jun 22, 2026Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →