Вы можете преобразовать в строку, как это:
import base64
with open("image.png", "rb") as image:
b64string = base64.b64encode(image.read())
Это должно дать вам такие же результаты, как если бы вы запустили это в Терминале:
base64 < image.png
И вы можете преобразовать эту строку обратно в изображение PIL следующим образом:
from PIL import Image
import io
f = io.BytesIO(base64.b64decode(b64string))
pilimage = Image.open(f)
Это должно быть эквивалентно следующему в Терминале:
base64 -D < "STRING" > recoveredimage.png
Обратите внимание, что если вы отправляете это через LoRa, вам лучше отправить PNG-кодированную версию файла, как я здесь, так как он сжат и займет меньше времени. Вы также можете отправить расширенную версию файла в оперативной памяти, но это будет почти на 50% больше. Файл PNG составляет 13 КБ. Развернутая версия в памяти будет иметь размер 100 * 60 * 3 или 18 КБ.