如何从CoreImage.texture刷新Image.texture?
如何从CoreImage.texture刷新Image.texture?,image,python-2.7,kivy,Image,Python 2.7,Kivy,我正在寻找一种从快照中刷新相机缩微图像的方法。我有这段代码,但在第一次刷新后(不是“重新加载微缩”线程中的代码),我什么也没有得到(黑屏)。 我尝试过其他解决方案,但显示6x mjpeg流太重了(而且我真的不需要高帧率)。在AsyncImage和将图像保存到文件方面取得了一些成功,但效率不是很高,我有这个加载_图像要处理 from kivy.app import App from kivy.uix.image import Image import time import threading i
我正在寻找一种从快照中刷新相机缩微图像的方法。我有这段代码,但在第一次刷新后(不是“重新加载微缩”线程中的代码),我什么也没有得到(黑屏)。
我尝试过其他解决方案,但显示6x mjpeg流太重了(而且我真的不需要高帧率)。在AsyncImage和将图像保存到文件方面取得了一些成功,但效率不是很高,我有这个加载_图像要处理
from kivy.app import App
from kivy.uix.image import Image
import time
import threading
import urllib
from kivy.core.image import Image as CoreImage
from io import BytesIO
class TestApp(App):
def reloadMiniatures(self):
while True:
data = BytesIO(urllib.urlopen("http://10.0.13.206:9000/?action=snapshot").read())
time.sleep(3)
self.image.texture = CoreImage(data, ext='jpg').texture
def build(self):
data = BytesIO(urllib.urlopen("http://10.0.13.206:9000/?action=snapshot").read())
self.image = Image()
self.image.texture = CoreImage(data, ext='jpg').texture
miniatures = threading.Thread(target=self.reloadMiniatures)
miniatures.daemon = True
miniatures.start()
return self.image
TestApp().run()
您可以尝试改用
Loader
:
def load_miniatures(self, *args):
proxy = Loader.image('http://10.0.13.206:9000/?action=snapshot')
proxy.bind(on_load=self.receive_miniatures)
def receive_miniatures(self, proxy):
if proxy.image.texture:
self.image.texture = proxy.image.texture
Clock.schedule_once(self.load_miniatures, 0.1)
def build(self):
self.image = Image()
self.load_miniatures()
return self.image
不幸的是,我还没有找到禁用加载缓存的方法。如果没有这个,它将从缓存中获取图像数据,并且不会刷新它。我试着在url中添加一些随机字符串,但是。。那些加载的图像保留在内存中,因此无法工作。禁用缓存也没有改变任何内容:缓存。_categories['kv.loader']['limit']=0缓存。_categories['kv.loader']['timeout']=0proxy=loader.image('',nocache=True)此'nocache=True'保存了一天。似乎它在1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1.9比1