【发布时间】:2020-09-13 21:46:09
【问题描述】:
由于我的 Kivy 应用程序中的预处理要求,我已经在我的运行代码中以字节变量形式保存了我的图像。从代码前面的文件或 url 读取的图像,所以我也知道每个图像变量的文件名和扩展名。
Kivy Image 类将文件作为输入并读取内容。要使用它,我必须将变量写入文件,然后再将它们读回。这是两个不必要的 I/O 和临时文件作为管理好吧。
有没有办法将图像从变量输入 Kivy?我看到 Kivy 有一个 CoreImage 类,但看不到如何将它变成一个小部件,并且不确定它是否能解决我的问题。
import kivy
from kivy.uix.image import Image
import requests
...
#read image file into bytes variable
img_from_file = open(path, "rb").read()
...
#read image url into bytes variable
img_from_url = requests.get(url).content
...
#what I think the Kivy code should look like
#this doesn't work because a path is expected
kivy_image = Image(source=img_from_file)
root.add_widget(kivy_image)
kivy_image = Image(source=img_from_url)
root.add_widget(kivy_image)
【问题讨论】:
-
可能有一些中间图像 api 层恰好有一个方便的功能,但你需要做的核心事情是将你的字节 blit 到一个纹理,然后显示它。
-
我研究了将字节插入纹理并获得了相当的方法,然后遇到了我在 Github 上用 Kivy 提出的另一个问题 github.com/kivy/kivy/issues/7085。
-
如何播放视频而不是图片?