如何将图像另存为变量?

时间:2018-09-28 16:31:07

标签: python python-3.x python-imaging-library

现在,我有一个带有精灵的python游戏,它会从其目录中的文件中获取图像。我要使它甚至不需要这些文件。以某种方式将图像预先存储在变量中,这样我就可以在程序中调用它,而无需其他.gif文件的帮助

我使用图像的实际方式是

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

因此,如果您能准确地替换此代码,将很有帮助

2 个答案:

答案 0 :(得分:3)

继续eatmeimdanish的想法:您可以手动进行:

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 :(得分: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()