Как использовать двоичные данные изображений непосредственно в kivy для виджетов, таких как значок и кнопки с плавающей точкой

#python #image #kivy #binary-data

Вопрос:

У меня есть несколько фотографий значков, двоичная форма которых хранится в базе данных . теперь у меня есть несколько подходов:

Чтобы извлечь двоичные данные из базы данных и скрыть их в файле png или jpeg и сохранить на устройстве пользователя

или

Для непосредственного использования двоичных данных без их хранения на устройстве пользователя

Я предпочитаю второе . но проблема в том, что виджетам kivy, таким как MDIcon или FloatButtton, нужна строка адреса, а не двоичные данные, поэтому их способ решить эту проблему .

И, пожалуйста, дайте мне знать, если это лучший способ решения этой проблемы.

Комментарии:

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

2. Прости, брат. Во-первых, я читаю изображение, используя метод чтения файла. Затем я сохраняю двоичные данные, полученные в таблице mysql. Тогда мой план состоит в том, чтобы использовать данные из таблицы и напрямую использовать их в киви. Но у меня нет идеи, как это сделать.

3. Кроме того , я также преобразовал двоичные данные в изображение с помощью модулей изображений bytesio и kivy coreimage. Но проблема заключалась в том, что я должен хранить файл на устройстве пользователя, которое мне не нужно. Так что любая лучшая идея или любой способ использовать двоичные данные непосредственно в виджетах kivy, таких как MdIcon

4. Не беспокойтесь! Вы сказали, что пробовали Байтезио. С помощью BytesIO вам не нужно хранить файл на самом диске. Хотите, чтобы я опубликовал пример?

5. да, братан, не могли бы вы, пожалуйста, опубликовать пример.. sry за поздний ответ

Ответ №1:

Вы можете конвертировать изображение, не сохраняя его на диске, как это.

 from io import BytesIO

def convertToJpeg(img):
    with BytesIO() as f:
        img.save(f, format='JPEG')
        return f.getvalue()
 

Комментарии:

1. спасибо, брат, но еще одна помощь, не могли бы вы, пожалуйста, дать некоторое объяснение этой функции ?