Как сохранить изображение как переменную?

1

Теперь у меня есть игра на питоне с спрайтами, и она получает изображения из файлов в ее каталоге. Я хочу сделать так, что мне даже не нужны файлы. Так или иначе, чтобы предварительно сохранить изображение в переменной, чтобы я мог вызвать его из программы, без помощи дополнительных файлов.gif

Фактический способ использования изображения

image = PIL.Image.open('image.gif')

Поэтому было бы полезно, если бы вы могли быть точными о том, как заменить этот код

  • 0
    У tkinter нет объекта изображения? У Qt есть один, названный QImage.
  • 1
    но вы должны каждый раз открывать изображение из файла
Показать ещё 9 комментариев
Теги:
python-3.x
python-imaging-library

2 ответа

3
Лучший ответ

Продолжая мысли о едеимаддани: вы можете сделать это вручную:

import base64

with open('image.gif', 'rb') as imagefile:
    base64string = base64.b64encode(imagefile.read()).decode('ascii')

print(base64string)  # print base64string to console
# Will look something like:
# iVBORw0KGgoAAAANS  ...  qQMAAAAASUVORK5CYII=

# or save it to a file
with open('testfile.txt', 'w') as outputfile:
    outputfile.write(base64string)



# Then make a simple test program
from tkinter import *
root = Tk()

# Paste the ascii representation into the program
photo = 'iVBORw0KGgoAAAANS ... qQMAAAAASUVORK5CYII='

img = PhotoImage(data=photo)
label = Label(root, image=img).pack()

Это, однако, с tkinter PhotoImage, но я уверен, что вы можете понять, как заставить его работать с PIL.

  • 1
    Не могли бы вы уточнить, как реализовать это в PIL, у меня возникли трудности
  • 1
    Я не использую PIL и не установил его, поэтому я не могу дать вам совет по этому вопросу, кроме как предложить вам взглянуть на: Как преобразовать строку base64 в объект PIL Image .
1

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

import base64
from PIL import Image
import io

with open("picture.png", "rb") as file:
    img = base64.b64encode(file.read())

img = Image.open(io.BytesIO(img))
img.show() 
  • 1
    Для чего значение img будет псевдонимом?
  • 0
    Где ваше объяснение?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню