def test_reload_asyncimage(self): from kivy.resources import resource_find from kivy.uix.image import AsyncImage temp_dir = mkdtemp() event = Event() image = AsyncImage() image.bind(on_load=lambda *args, **kwargs: event.set()) fn = resource_find('data/logo/kivy-icon-16.png') source = join(temp_dir, 'source.png') copyfile(fn, source) event.clear() image.source = source self.wait_for_event_or_timeout(event) self.render(image, framecount=2) self.assertEqual(image.texture_size, [16, 16]) remove(source) fn = resource_find('data/logo/kivy-icon-32.png') copyfile(fn, source) event.clear() image.reload() self.wait_for_event_or_timeout(event) self.render(image, framecount=2) self.assertEqual(image.texture_size, [32, 32]) remove(source) rmtree(temp_dir)
def load_zipimage(self, source, frames): # load ZIP with images named: 000.png, 001.png, ... from kivy.uix.image import AsyncImage event = Event() image = AsyncImage(anim_delay=0.0333333333333333) # bind to 'on_load' because there are various # steps where the image is (re)loaded, but # the event is triggered only at the end image.bind(on_load=lambda *args, **kwargs: event.set()) image.source = source self.wait_for_event_or_timeout(event) self.render(image) proxyimg = image._coreimage self.assertTrue(proxyimg.anim_available) self.assertEqual(len(proxyimg.image.textures), frames) return image