图像¶
用于加载图像并将其转换为 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 版本新增):
- class kivy.core.image.Image(arg, **kwargs)[源代码]¶
-
加载图像并存储其尺寸和纹理。
在 1.0.7 版本发生变更: mipmap 属性已添加。texture_mipmap 和 texture_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
创建纹理时保留图像数据。
- property nocache¶
指示纹理是否不会被存储在缓存中。
在 1.6.0 版本加入.
- 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。
- property data¶
图像数据。(如果图像启用了mipmap,将使用第0级)
- flip_vertical¶
指示纹理是否需要垂直翻转。
- fmt¶
解码后的图像格式,为可用纹理格式之一。
- property height¶
图像高度(以像素为单位)。(如果图像启用了mipmap,将使用第0级)
- mipmaps¶
每个mipmap的数据。
- property rowlength¶
图像行长度。(如果图像启用了mipmapping,将使用第0级)
在 1.9.0 版本加入.
- property size¶
图像(宽度,高度)以像素为单位。(如果图像启用了mipmapping,将使用第0级)
- source¶
图片来源(如有)
- property width¶
图像宽度(以像素为单位)。(如果图像启用了mipmapping,则使用第0级)