图像

用于加载图像并将其转换为 Texture 的核心类。原始图像数据可保留在内存中以便进一步访问。

在 1.11.0 版本发生变更: 添加对ARGB和ABGR图像数据的支持。

内存图像加载

在 1.9.0 版本加入: 官方支持内存加载。并非所有提供程序都支持此功能,但目前SDL2、pygame、pil和imageio已实现该功能。

要加载带有文件名的图像,通常你会这样做:

from kivy.core.image import Image as CoreImage
im = CoreImage("image.png")

你也可以直接从内存块加载图像数据。此时,不再传递文件名,而是需要将数据作为BytesIO对象连同“ext”参数一起传递。这两者都是必需的:

import io
from kivy.core.image import Image as CoreImage
data = io.BytesIO(open("image.png", "rb").read())
im = CoreImage(data, ext="png")

默认情况下,图像不会被缓存,因为我们的内部缓存需要文件名。如果您希望启用缓存,请添加一个代表您文件的文件名(该名称仅用于缓存)::

import io
from kivy.core.image import Image as CoreImage
data = io.BytesIO(open("image.png", "rb").read())
im = CoreImage(data, ext="png", filename="image.png")

保存图像

CoreImage 可以保存到文件中:

from kivy.core.image import Image as CoreImage
image = CoreImage(...)
image.save("/tmp/test.png")

或者你可以获取字节(1.11.0 版本新增):

```python import io from kivy.core.image import Image as CoreImage

class kivy.core.image.Image(arg, **kwargs)[源代码]

基类:EventDispatcher

加载图像并存储其尺寸和纹理。

在 1.0.7 版本发生变更: mipmap 属性已添加。texture_mipmaptexture_rectangle 已被删除。

在 1.0.8 版本发生变更: Image 控件可以更改其纹理。已引入新事件 'on_texture'。新增了用于处理序列动画的方法。

参数:
arg:可以是字符串(str)、Texture、BytesIO 或 Image 对象。

指向要加载的图像文件或数据URI的字符串路径;或一个Texture对象,该对象将被包装在Image对象中;或一个包含原始图像数据的BytesIO对象;或一个已存在的图像对象,在这种情况下,将返回给定图像对象的真实副本。

keep_data:布尔值,默认为False

创建纹理时保留图像数据。

mipmap:布尔值,默认为 False

为纹理创建mipmap。

anim_delay:浮点数,默认值为 .25

每个动画帧之间的延迟(以秒为单位)。数值越低,动画速度越快。

ext:str,仅与 BytesIO arg 一起使用

用于确定如何加载原始图像数据的文件扩展名。

filename:字符串,仅与 BytesIO 参数 arg 一起使用。

用于原始图像数据在图像缓存中使用的文件名。

property anim_available

如果此Image实例具有可用的动画,则返回True。

在 1.0.8 版本加入.

property anim_delay

每帧动画之间的延迟。数值越低,动画速度越快。

在 1.0.8 版本加入.

property anim_index

返回当前纹理中图像的索引号。

在 1.0.8 版本加入.

anim_reset(allow_anim)[源代码]

如果存在动画,则重置该动画。

在 1.0.8 版本加入.

参数:
allow_anim: 布尔值

指示动画是否应重新开始播放。

用法:

# start/reset animation
image.anim_reset(True)

# or stop the animation
image.anim_reset(False)

你可以在动画播放时更改其速度:

# Set to 20 FPS
image.anim_delay = 1 / 20.
property filename

获取/设置图像的filename。

property height

图像高度

property image

获取/设置数据图像对象。

static load(filename, **kwargs)[源代码]

加载图像

参数:
filename:字符串

图像的文件名。

keep_data:布尔值,默认为False

创建纹理时保留图像数据。

load_memory(data, ext, filename='__inline__')[源代码]

(内部)从原始数据加载图像的方法。

property nocache

指示纹理是否不会被存储在缓存中。

在 1.6.0 版本加入.

on_texture(*largs)[源代码]
当纹理引用或内容发生变化时,会触发此事件。

已更改。它通常用于序列图像。

在 1.0.8 版本加入.

read_pixel(x, y)[源代码]

对于给定的本地x/y坐标,返回该位置的像素颜色。

警告

此函数仅能用于通过`keep_data=True`关键字加载的图像。例如:

m = Image.load('image.png', keep_data=True)
color = m.read_pixel(150, 150)
参数:
x:整数

所讨论像素的局部x坐标。

y:整数

所讨论像素的局部y坐标。

remove_from_cache()[源代码]

从缓存中移除该图像。这有助于在图像内容发生变化时,从磁盘重新加载图像。

在 1.3.0 版本加入.

用法:

im = CoreImage('1.jpg')
# -- do something --
im.remove_from_cache()
im = CoreImage('1.jpg')
# this time image will be re-loaded from disk
save(filename, flipped=False, fmt=None)[源代码]

将图像纹理保存到文件。

文件名应使用'.png'扩展名,因为从GPU读取的纹理数据为RGBA格式。'.jpg'可能可行,但未经充分测试,某些提供程序在使用时可能会出错。其他扩展名均未得到官方支持。

flipped 参数会将保存的图像垂直翻转,默认值为 False

示例:

# Save an core image object
from kivy.core.image import Image
img = Image('hello.png')
img.save('hello2.png')

# Save a texture
texture = Texture.create(...)
img = Image(texture)
img.save('hello3.png')

在 1.7.0 版本加入.

在 1.8.0 版本发生变更: 参数 flipped 已添加,用于在保存前翻转图像,默认值为 False。

在 1.11.0 版本发生变更: 新增参数 fmt,用于强制指定文件的输出格式。现在 Filename 可以是 BytesIO 对象。

property size

图片尺寸(宽度,高度)

property texture

图像的纹理

property width

图像宽度

class kivy.core.image.ImageData(width, height, fmt, data, source=None, flip_vertical=True, source_image=None, rowlength=0)[源代码]

基类:object

图像和mipmap图像的容器。该容器始终至少包含mipmap级别0。

add_mipmap(level, width, height, data, rowlength)[源代码]

为特定的mipmap级别添加图像。

在 1.0.7 版本加入.

property data

图像数据。(如果图像启用了mipmap,将使用第0级)

flip_vertical

指示纹理是否需要垂直翻转。

fmt

解码后的图像格式,为可用纹理格式之一。

get_mipmap(level)[源代码]

如果存在,则获取指定级别的mipmap图像。

在 1.0.7 版本加入.

property height

图像高度(以像素为单位)。(如果图像启用了mipmap,将使用第0级)

iterate_mipmaps()[源代码]

遍历所有可用的mipmap图像。

在 1.0.7 版本加入.

mipmaps

每个mipmap的数据。

property rowlength

图像行长度。(如果图像启用了mipmapping,将使用第0级)

在 1.9.0 版本加入.

property size

图像(宽度,高度)以像素为单位。(如果图像启用了mipmapping,将使用第0级)

source

图片来源(如有)

property width

图像宽度(以像素为单位)。(如果图像启用了mipmapping,则使用第0级)