pygame.image
pygame module for image transfer
load new image from a file (or file-like object)
save an image to file (or file-like object)
get version number of the SDL_Image library being used
test if extended image formats can be loaded
transfer image to string buffer
create new Surface from a string buffer
create a new Surface that shares data inside a bytes buffer
load new BMP image from a file (or file-like object)
load an image from a file (or file-like object)
save a png/jpg image to file (or file-like object)

图像模块包含加载和保存图片以及将表面转换为其他包可用格式的功能。

请注意,没有Image类;图像作为Surface对象加载。Surface类允许操作(绘制线条、设置像素、捕获区域等)。

在绝大多数安装中,pyGame都是通过在幕后使用SDL_Image库支持扩展格式而构建的。但是,某些安装可能仅支持解压缩 BMP 图像。有了完全的映像支持, pygame.image.load()load new image from a file (or file-like object) 函数可以加载以下格式。

  • BMP

  • GIF (非动画)

  • JPEG

  • LBM (及 PBMPGMPPM )

  • PCX

  • PNG

  • PNM

  • SVG (有限支持,使用Nano SVG)

  • TGA (未压缩)

  • TIFF

  • WEBP

  • XPM

New in pygame 2.0: 加载SVG、WebP、PNM

保存图像仅支持一组有限的格式。您可以保存为以下格式。

  • BMP

  • JPEG

  • PNG

  • TGA

JPEGJPG ,以及 TIFTIFF 参考相同的文件格式

New in pygame 1.8: 保存PNG和JPEG文件。

pygame.image.load()
load new image from a file (or file-like object)
load(filename) -> Surface
load(fileobj, namehint="") -> Surface

从文件源加载图像。您可以传递一个文件名、一个类似于Python文件的对象或一个pathlib.Path。

PYGAME将自动确定图像类型(例如, GIF 或位图),并根据数据创建新的Surface对象。在某些情况下,它将需要知道文件扩展名(例如, GIF 图像应以“.gif”结尾)。如果传递一个原始的类似文件的对象,您可能还希望将原始文件名作为namehint参数传递。

返回的Surface将包含与其来自的文件相同的颜色格式、Colorkey和Alpha透明度。你会经常想要打电话给 pygame.Surface.convert()change the pixel format of an image 在没有参数的情况下,创建一个将在屏幕上更快绘制的副本。

对于Alpha透明度,例如在.png图像中,请使用 pygame.Surface.convert_alpha()change the pixel format of an image including per pixel alphas 方法,以便图像具有每像素的透明度。

PYGAME可能并不总是支持所有的图像格式。至少它将支持未压缩的 BMP 。如果 pygame.image.get_extended()test if extended image formats can be loaded 退货 True ,你应该能够加载大多数图像(包括PNG,JPG和GIF)。

您应该使用 os.path.join() 为了兼容性。

eg. asurf = pygame.image.load(os.path.join('data', 'bla.png'))
pygame.image.save()
save an image to file (or file-like object)
save(Surface, filename) -> None
save(Surface, fileobj, namehint="") -> None

这会将您的曲面另存为 BMPTGAPNG ,或 JPEG 形象。如果无法识别文件扩展名,则默认为 TGA 。两者都有 TGA ,以及 BMP 文件格式创建未压缩的文件。您可以传递一个文件名、一个路径lib.Path或一个类似于Python文件的对象。对于类似文件的对象,图像保存到 TGA 格式,除非传入带有可识别扩展名的名称提示。

备注

当保存到类似文件的对象时,对于大多数格式,似乎需要在保存到该对象后刷新该对象,以便可以从该对象加载。

Changed in pygame 1.8: 保存PNG和JPEG文件。

Changed in pygame 2.0.0: 这个 namehint 参数,以便可以保存其他格式 TGA 变成一个类似文件的物体。可以使用JPEG保存为类似文件的对象。

pygame.image.get_sdl_image_version()
get version number of the SDL_Image library being used
get_sdl_image_version() -> None
get_sdl_image_version() -> (major, minor, patch)

如果pyGame是使用扩展图像格式构建的,则此函数将以3个整数的元组形式返回SDL_Image库的版本号 (major, minor, patch) 。如果不是,则它将返回 None

New in pygame 2.0.0.

pygame.image.get_extended()
test if extended image formats can be loaded
get_extended() -> bool

如果pyGame是用扩展的图像格式构建的,则此函数将返回True。仍然无法确定哪些格式将可用,但通常您将能够加载所有这些格式。

pygame.image.tostring()
transfer image to string buffer
tostring(Surface, format, flipped=False) -> bytes

创建一个可使用 fromstringfrombytes 其他Python图像包中的方法。一些Python图像包更喜欢自下而上格式的图像(例如,PyOpenGL)。如果你通过了 True 对于翻转的参数,字符串缓冲区将垂直翻转。

Format参数是下列值之一的字符串。请注意,只有8位曲面可以使用“P”格式。其他格式适用于任何曲面。还要注意的是,其他的Python图像包比pyGame支持更多的格式。

  • P ,8位调色板表面

  • RGB ,24位图像

  • RGBX ,具有未使用空间的32位图像

  • RGBA ,带有Alpha通道的32位图像

  • ARGB ,首先使用Alpha通道的32位图像

  • RGBA_PREMULT ,颜色按Alpha通道缩放的32位图像

  • ARGB_PREMULT ,颜色按Alpha通道缩放的32位图像,Alpha通道优先

pygame.image.fromstring()
create new Surface from a string buffer
fromstring(bytes, size, format, flipped=False) -> Surface

此函数的参数类似于 pygame.image.tostring()transfer image to string buffer 。Size参数是一对表示宽度和高度的数字。一旦创建了新的Surface,它就独立于传入字节的内存。

传递的字节和格式必须精确计算到指定的图像大小。否则,将成为 ValueError 都会被举起。

请参阅 pygame.image.frombuffer()create a new Surface that shares data inside a bytes buffer 方法,以获得可能更快的将图像传输到pyGame的方法。

备注

fromstring()tostring() 使用“字符串”命名,但它们是以字节为单位进行处理的。在Python2中,str=bytes,所以这是“from string”,就像在Python2字符串中一样。

pygame.image.frombuffer()
create a new Surface that shares data inside a bytes buffer
frombuffer(buffer, size, format) -> Surface

创建直接从缓冲区共享像素数据的新曲面。此缓冲区可以是字节、字节数组、内存视图、 pygame.BufferProxypygame object to export a surface buffer through an array protocol 或任何支持缓冲区协议的对象。此方法采用类似的参数 pygame.image.fromstring()create new Surface from a string buffer ,但无法垂直翻转源数据。

它的运行速度会比 pygame.image.fromstring()create new Surface from a string buffer ,因为没有像素数据必须被分配和复制。

它接受以下‘格式’参数:

  • P ,8位调色板表面

  • RGB ,24位图像

  • BGR ,24位图像,红色和蓝色通道互换。

  • RGBX ,具有未使用空间的32位图像

  • RGBA ,带有Alpha通道的32位图像

  • ARGB ,首先使用Alpha通道的32位图像

pygame.image.load_basic()
load new BMP image from a file (or file-like object)
load_basic(file) -> Surface

从文件源加载图像。您可以传递文件名或类似于Python文件的对象,也可以传递路径lib.Path。

该功能仅支持加载基本的图像格式,即 BMP 格式化。此功能始终可用,无论是如何构建的。

pygame.image.load_extended()
load an image from a file (or file-like object)
load_extended(filename) -> Surface
load_extended(fileobj, namehint="") -> Surface

此函数类似于 pygame.image.load()load new image from a file (or file-like object) ,唯一不同的是,只有在构建时使用扩展的图像格式支持时,才能使用该函数。

Changed in pygame 2.0.1: 此函数始终可用,但会引发 NotImplementedError 如果不支持扩展图像格式。以前,此功能可能可用,也可能不可用,具体取决于扩展图像格式支持的状态。

pygame.image.save_extended()
save a png/jpg image to file (or file-like object)
save_extended(Surface, filename) -> None
save_extended(Surface, fileobj, namehint="") -> None

这会将您的曲面另存为 PNGJPEG 图像。

如果要将图像保存到类似文件的对象,则此函数使用namehint参数来确定要保存的文件的格式。保存到 JPEG 如果在保存到类似文件的对象时未指定名称提示。

Changed in pygame 2.0.1: 此函数始终可用,但会引发 NotImplementedError 如果不支持扩展图像格式。以前,此功能可能可用,也可能不可用,具体取决于扩展图像格式支持的状态。




Edit on GitHub