Многим из нас трудно добавить изображение в базу данных. Pysondb решает большинство ваших проблем, теперь я покажу, как хранить изображение в pysondb
Что мы делаем сегодня:
- Мы собираемся кодировать изображение, а затем расшифровать его.
- Тогда мы собираемся хранить его в pysondb.
Предварительные условия
- Установите pysondb через PIP
pip install pysondb
Давайте начнем.
У нас есть изображение, как ниже.
file2son.png
Мы собираемся кодировать это.
- Нам нужно сначала импортировать модуль Base64.
- Он обрабатывает кодирование изображения BASE64.
from pysondb import db import base64 from PIL import Image from io import BytesIO x=db.getDb("fs.json") def addimage(fi,name): with open(fi,"rb") as dataimg: raw_data=base64.b64encode(dataimg.read()) x.add({"data":raw_data.decode('utf-8'),"name":name}) addimage("file2son.png","image12")
- Мы импортируем pysondb, bas64
- Двое других будут обработаны в ближайшее время.
x=db.getDb("fs.json")
- Это создает или соединяет базу данных JSON под названием FS.JSON
- Если вы не знаете, pysondb читайте это
def addimage(fi,name): with open(fi,"rb") as dataimg: raw_data=base64.b64encode(dataimg.read()) x.add({"data":raw_data.decode('utf-8'),"name":name}) addimage("file2son.png","image12")
- Мы открываем файл (здесь file2son.png) в чтении, двоичном режиме как DataImg.
raw_data=base64.b64encode(dataimg.read())
- Это кодирует все данные в DataImg в формате Base64.
x.add({"data":raw_data.decode('utf-8'),"name":name})
- Этот кусок кода хранит данные в базе данных PysondB.
- Смотрите, что RAW_DATA после кодирования декодируется в формате «UTF-8».
- Иначе отображается ошибка.
Итак, наконец, у нас есть данные в базе данных FS.JSON.
Давай вернем изображение
def getimage(filename,name): img_data=x.getBy({"name":name}) img=Image.open(BytesIO(base64.b64decode(img_data[0]['data2']))) img.save(filename,"PNG") getimage("file.png","image12")
img_data=x.getBy({"name":name})
- Этот кусок кода получает данные Base64 от FS.JSON с предоставленным именем.
img=Image.open(BytesIO(base64.b64decode(img_data[0]['data2'])))
- Здесь мы используем изображение из модуля Pillow (PIL).
- Что делает этот код:
- Открывает данные Base64 от FS.JSON
- И Bytesio преобразует данные в байтовый поток, который пойман функцией изображения и назначенной переменной IMG.
img.save(filename,"PNG")
- Это сохраняет IMG в имени файла (здесь file.png) в формате PNG
- У вас есть file.png в каталоге, который был закодирован и декодирован.
Весь код
from pysondb import db import base64 from PIL import Image from io import BytesIO x=db.getDb("fs.json") def addimage(fi,name): with open(fi,"rb") as data: raw_data=base64.b64encode(data.read()) x.add({"data":raw_data.decode('utf-8'),"name":name}) addimage("file2son.png","image12") # addimage() is used to add file2son.png image in database with name as image12 def getimage(filename,name): img_data=x.getBy({"name":name}) img=img_data[0]['data2'].decode('base64')) img.save(filename,"PNG") getimage("file.png","image12") # getimage is used to retrieve the stored image of name image12 and get it as file.png
Вот на сегодня, следуйте за большим количеством блогов.
Есть какие -либо сомнения или я ошибаюсь где угодно, пожалуйста, прокомментируйте здесь. Чтобы я мог исправить это.
Оригинал: “https://dev.to/fredysomy/how-to-encode-and-store-images-in-pysondb-4hco”