<p>在下面的示例中,它演示了如何使用PIL-Image操作图像,并将其表示为Kivy图像小部件的<em>source</em>、<em>纹理</em>和<em>canvas</em>。在</p>
<h2>示例</h2>
<h2>在主.py在</h2>
<pre><code>from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.image import CoreImage
from kivy.lang import Builder
from PIL import Image
kv = Builder.load_string('''
#:kivy 1.11.0
<RootWidget>:
img: img
img3: img3
img4: img4
do_default_tab: False
TabbedPanelItem:
text: 'PIL Image'
Screen:
RelativeLayout:
Image:
id: img
pos_hint: {"left": 1, 'bottom': 1}
size_hint: 0.5, 1
allow_stretch: True
RelativeLayout:
Image:
id: img3
pos_hint: {"right": 1, 'bottom': 1}
size_hint: 0.5, 1
allow_stretch: True
TabbedPanelItem:
text: 'canvas'
Screen:
FloatLayout:
Image:
id: img4
keep_data: True
allow_stretch: True
canvas.before:
Color:
rgba: 0, 0, 0, 1 # Black
Rectangle:
pos: self.pos
size: self.size
''')
class RootWidget(TabbedPanel):
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
iw = Image.open("./DSC08518.JPG") # Use PIL.Image
iw.save('./phase.jpg')
gray = iw.convert('1')
gray.save('./gray_im.jpg')
self.img.source = './phase.jpg'
self.img3.texture = CoreImage('./gray_im.jpg').texture
self.img4.source = './gray_im.jpg'
class KivyPILApp(App):
title = "Kivy & PIL Demo"
def build(self):
return RootWidget()
if __name__ == "__main__":
KivyPILApp().run()
</code></pre>
<h2>输出</h2>
<p><a href="https://i.stack.imgur.com/AZ3Qi.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/AZ3Qi.png" alt="Img01 - Kivy Image Source & Texture"/></a>
<a href="https://i.stack.imgur.com/gvNKe.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gvNKe.png" alt="Img02 - Kivy Image canvas"/></a></p>