Kivy - 图像
能够显示图片是任何 GUI 应用程序的基本要求。Kivy 框架包含 Image 小部件作为图片容器。它能够从 png、jpg 和 GIF 文件加载图像数据。对于 SVG 文件,您可能需要另一个名为 Svg 本身的小部件。
Kivy 包含两个图片小部件 − Image 和 AsyncImage。它们在"kivy.uix.image"模块中定义。
Image 小部件用于加载本地机器中可用的图片文件。
from kivy.uix.image import Image img = Image(source = 'logo.png')
要从任何外部源加载任何图片,您需要使用 AsyncImage 小部件。 AsyncImage 类是 Image 类的子类。
from kivy.uix.image import AsyncImage img = AsyncImage(source = 'http://xyz.com/logo.png')
如果您需要通过从 URL 检索图像来显示图像,AsyncImage 会在后台线程中执行此操作,而不会阻止您的应用程序。
Image 类定义以下属性 −
source − 图像的文件名/来源。source 是一个 StringProperty,默认为 None。
fit_mode − 如果图像的大小与小部件的大小不同,则此属性确定应如何调整图像大小以适合小部件框。
可用选项
scale-down − 对于大于图像小部件尺寸的图像,图像将缩小以适合小部件框,保持其纵横比且不拉伸。 如果图像的大小小于小部件,它将以原始大小显示。
fill − 图像将拉伸以填充小部件,而不管其纵横比或尺寸如何。 如果图像的纵横比与小部件不同,则此选项可能会导致图像失真。
contain − 图像将调整大小以适合小部件框,保持其纵横比。 如果图像尺寸大于小部件尺寸,则行为将类似于"scale-down"。但是,如果图像尺寸小于小部件尺寸,则与"缩小"不同,图像将调整大小以适合小部件内部。
cover − 图像将水平或垂直拉伸以填充小部件框,保持其纵横比。如果图像的纵横比与小部件不同,则图像将被剪裁以适合。
texture − 图像的纹理对象。纹理表示原始的,已加载的图像纹理。根据 fit_mode 属性在渲染过程中进行拉伸和定位。
texture_size − 图像的纹理大小。这表示原始的,已加载的图像纹理大小。
color − 图像颜色,格式为 (r, g, b, a)。此属性可用于"着色"图像。但是,如果源图像不是灰色/白色,颜色实际上不会按预期工作。
image_ratio − 一个只读属性,返回图像的比率(宽度/浮点(高度))。
reload() − 从磁盘重新加载图像。这有助于在图像内容发生变化时从磁盘重新加载图像。
img = Image(source = '1.jpg') img.reload()
示例
在下面的示例代码中,我们主要尝试演示 fit_mode 属性的效果。下面给出的是一个"kv"语言脚本,它在轮播小部件中显示不同的图像。每个图像都有不同的 fit_mode 属性值。
"kv"语言脚本是 −
Carousel: direction:'top' Image: source:'1.png' fit_mode:"scale-down" Image: source:"TPlogo.png" fit_mode:"contain" Image: source:"TPlogo.png" fit_mode:"fill" Image: source:"TPlogo.png" fit_mode:"cover"
输出
在 Kivy 应用程序类中加载此脚本并运行它后,将根据各自的 fit_mode &minus 显示不同的图像;
fit_mode = 缩小
源比图像小部件大。
fit_mode=包含
源图像小于图像小部件。
fit_mode:填充
调整图像大小以适应而不丢失纵横比。
fill_mode=覆盖
图片被拉伸以覆盖整个小部件区域。