#!python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2019/10/31 21:53:19 +0900> """ Dispay image for Kivy and Pillow. Windows10 x64 1903 + Python 3.7.5 32bit+ Kivy 1.11.1 Imagechg2App -> imagechg2.kv """ from PIL import Image from kivy.app import App from kivy.uix.widget import Widget from kivy.properties import StringProperty, ObjectProperty from kivy.graphics.texture import Texture from kivy.config import Config Config.set('graphics', 'width', '640') Config.set('graphics', 'height', '640') image_files = [ "./sample1.png", "./sample2.png", "./sample3.png", ] class ImagechgWidget(Widget): image_texture = ObjectProperty(None) text = StringProperty('') def __init__(self, **kwargs): super(ImagechgWidget, self).__init__(**kwargs) self.image_texture = Texture.create(size=(512, 512)) def buttonClicked(self): self.loadimage(image_files[0]) def buttonClicked2(self): self.loadimage(image_files[1]) def buttonClicked3(self): self.loadimage(image_files[2]) def loadimage(self, fn): self.text = fn self.image_texture = image_to_texture(fn) class Imagechg2App(App): def __init__(self, **kwargs): super(Imagechg2App, self).__init__(**kwargs) self.title = 'Image change' def build(self): return ImagechgWidget() def image_to_texture(filepath): """Convert Piloow Image to Kivy Texture.""" img = Image.open(filepath, 'r') # convert grayscale for Pillow img = img.convert('L').convert('RGB') tex = Texture.create(size=img.size) tex.blit_buffer(img.tobytes()) tex.flip_vertical() return tex if __name__ == "__main__": Imagechg2App().run()