【pygame】pygame.transform

Pygame.transform提供了一系列方法用于图像变换,如翻转、缩放、旋转和过滤。其中,flip用于垂直或水平翻转图像,scale进行大小调整,rotate执行旋转,rotozoom结合缩放和旋转。此外,smoothscale提供平滑缩放,scale2x用于图像倍增,laplacian检测图像边缘。这些函数返回新的Surface对象,通常用于游戏和图形应用中的视觉效果处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pygame.transform 对图片进行操作 用于改变surfaces形态的pygame模块

pygame.transform.flip - 垂直和水平翻转
pygame.transform.scale - 调整大小到新的分辨率
pygame.transform.rotate - 旋转图像
pygame.transform.rotozoom - 过滤的缩放和旋转
pygame.transform.scale2x - 专门的图像倍增器
pygame.transform.smoothscale - 平滑地将曲面缩放到任意大小
pygame.transform.get_smoothscale_backend - 返回正在使用的smoothscale过滤器版本:‘GENERIC’,‘MMX’或’SSE’
pygame.transform.set_smoothscale_backend - 将smoothscale过滤器版本设置为以下之一:‘GENERIC’,‘MMX’或’SSE’
pygame.transform.chop - 获取移除的内部区域的图像副本
pygame.transform.laplacian - 在surface中查找边
pygame.transform.average_surfaces - 从许多surface中找到平均surface。
pygame.transform.average_color - 查找surface的平均颜色
pygame.transform.threshold - 查找表面中的哪些像素以及多少像 在’search_color’或’search_surf’的阈值内。

surface变换是移动像素或调整像素大小的操作。 所有这些函数都使用Surface进行操作并返回带有结果的新Surface
一些变换被认为是破坏性的。 这意味着每次执行它们都会丢失像素数据。 常见的例子是调整大小和旋转。 因此,重新转换原始surface比保持多次转换图像更好。

pygame.transform.flip() 垂直和水平翻转

flip(Surface, xbool, ybool) -> Surface
这可以通过垂直,水平或两者一起来翻转Surface。 翻转Surface是非破坏性的,并返回具有相同尺寸的新曲面。

pygame.transform.scale() 调整大小到新的分辨率

scale(Surface, (width, height), DestSurface = None) -> Surface
将Surface的大小调整为新分辨率。 这是一种快速扩展操作,不会对结果进行采样。
可以使用可选的目标Surface,而不是创建新的目标Surface。 如果你想反复缩放某些东西,这会更快。 但是,目标必须与传入的(width, height)大小相同。目标Surface也必须是相同的格式。

pygame.transform.rotate() 旋转图像

rotate(Surface, angle) -> Surface
未经过滤的逆时针旋转。 angle参数表示角度,可以是任何浮点值。 负角度量将顺时针旋转。
除非以90度的增量旋转,否则图像将被填充得更大以保持新的尺寸。 如果图像具有像素alpha,则填充区域将是透明的。 否则,pygame将选择与Surface颜色键(colorkey)或左上角像素值匹配的颜色。

pygame.transform.rotozoom() 过滤的缩放和旋转

rotozoom(Surface, angle, scale) -> Surface
这是组合的缩放和旋转变换。 生成的Surface将是一个过滤的32位Surface。 scale参数是一个浮点值,将乘以当前分辨率。 角度参数是一个浮点值,表示要旋转的逆时针度数。 负旋转角度将顺时针旋转。

pygame.transform.scale2x() 专门的图像倍增器

scale2x(Surface, DestSurface = None) -> Surface
这将返回一个原始尺寸的两倍的新图像。 它使用AdvanceMAME Scale2X算法,该算法可以实现“无瑕疵”的位图图形缩放。
这实际上只对纯色的简单图像产生影响。 在摄影和抗锯齿图像上,它看起来像一个普通的未过滤的尺度。
可以使用可选的目标surface,而不是创建新的目标surface。 如果你想反复缩放某些东西,这会更快。 但是,目标必须是传入的源surface大小的两倍。目标surface也必须是相同的格式。

pygame.transform.smoothscale() 平滑地将曲面缩放到任意大小

smoothscale(Surface, (width, height), DestSurface = None) -> Surface
使用两种不同算法中的一种来根据需要缩放输入surface的每个维度。 对于收缩,输出像素是它们覆盖的颜色的面积平均值。 对于扩展,使用双线性滤波器。 对于x86-64和i686架构,包含优化的MMX程序,运行速度比其他机器类型快得多。 大小是(width, height)的2个数字序列。 此函数仅适用于24位或32位surface。 如果输入表面位深度小于24,则抛出异常。

pygame.transform.get_smoothscale_backend() 返回正在使用的smoothscale过滤器版

本:‘GENERIC’,‘MMX’或’SSE’
get_smoothscale_backend() -> String
显示smoothscale是否使用MMX或SSE加速。 如果没有可用的加速,则返回“GENERIC”。 对于x86处理器,要使用的加速级别在运行时确定。
该函数用于pygame测试和调试。

pygame.transform.set_smoothscale_backend()

将smoothscale过滤器版本设置为以下之一:‘GENERIC’,‘MMX’或’SSE’
set_smoothscale_backend(type) -> None
设置smoothscale加速。 采用字符串参数。 'GENERIC’的值会关闭加速。 'MMX’仅使用MMX指令。 'SSE’也允许SSE扩展。 如果当前处理器无法识别或不支持类型,则会引发值错误。
该函数用于pygame测试和调试。 如果smoothscale导致无效的指令错误,那么应该报告pygame / SDL错误。 仅将此函数用作临时修复。

pygame.transform.chop() 获取移除的内部区域的图像副本

chop(Surface, rect) -> Surface
提取图像的一部分。 围绕给定矩形区域的所有垂直和水平像素都被移除。 然后将角落区域(与矩形对角线)放在一起。 (此操作不会更改原始图像。)
注意:如果您想要一个“crop(裁剪)”返回矩形内图像的一部分,您可以使用矩形blit到新surface或复制子surface。
搜索pygame.transform.chop的示例

pygame.transform.laplacian() 在surface中查找边

laplacian(Surface, DestSurface = None) -> Surface
使用拉普拉斯算法查找曲面中的边。

pygame.transform.average_surfaces() 从许多surface中找到平均surface

average_surfaces(Surfaces, DestSurface = None, palette_colors = 1) -> Surface
采用一系列surfaces并返回具有每个surface的平均颜色的曲面。

palette_colors - 如果为true,我们将平均调色板中的颜色,否则我们平均像素值。 如果surfacec是灰度颜色而不是调色板颜色,则此选项非常有用。
注意,此函数目前不能正确使用surface处理调色板。
新的pygame 1.8 palette_colors参数在pygame 1.9中新增了
搜索pygame.transform.average_surfaces的示例

pygame.transform.average_color() 查找surface的平均颜色

average_color(Surface, Rect = None) -> Color
查找surface的平均颜色或由Rect指定的曲面区域,并将其作为颜色返回。
搜索pygame.transform.average_color的示例

pygame.transform.threshold() 查找表面中的哪些像素以及多少像素

在’search_color’或’search_surf’的阈值内。
threshold(dest_surf, surf, search_color, threshold=(0,0,0,0), set_color=(0,0,0,0), set_behavior=1, search_surf=None, inverse_set=False) -> num_threshold_pixels
这种多功能的函数可用于在’search_color’附近的’surf’中查找颜色,或在单独的’search_surf’中接近颜色。
它还可用于将像素传输到匹配或不匹配的“dest_surf”。
默认情况下,它会在’dest_surf’中设置像素,其中所有不在阈值范围内的像素都会更改为set_color。 如果inverse_set可选地设置为True,则阈值内的像素将更改为set_color。
如果给出了可选的’search_surf’表面,则它用于阈值而不是指定的’set_color’。 也就是说,它将在“search_surf”的同一坐标下,在像素的“threshold”内找到“surf”中的每个像素。
参数:(这里还有一些复杂的东西,查看原网址)
(1)dest_surf(pygame.Surface对象或None) - 正在改变的surface。请参阅’set_behavior’。如果正在计数(set_behavior为0),则应为None。
(2)surf(pygame.Surface对象) - 正在看的表面。
(3)search_color(pygame.Color对象) - 正在搜索的颜色。
(4)threshold(pygame.Color对象) - 距离search_color(或search_surf)这一距离。您可以使用阈值(r,g,b,a),其中r,g,b可以具有不同的阈值。因此,如果您愿意,可以使用r阈值40和蓝色阈值2。
(5)set_color(pygame.Color对象或None) - 我们在dest_surf中设置的颜色。
(6)set_behavior(int) -
set_behavior = 1(默认值)。 dest_surface中的像素将更改为“set_color”。
set_behavior = 0我们不改变’dest_surf’,仅仅计算。使dest_surf = None。
set_behavior =2 ‘dest_surf’中设置的像素将来自’surf’。
(7)search_surf(pygame.Surface对象或None) -
search_surf =None(默认)。搜索“search_color”取而代之。
search_surf =Surface。查看’search_surf’中的颜色,而不是使用’search_color’。
(8)inverse_set(bool) - 默认是False。超出阈值的像素被改变。True,阈值内的像素会发生变化。

return int
类型:
返回:与’search_color’或search_surf相比,'surf’中’threshold’内的像素数。

pygame.transform.flip() is a method in the Pygame library that is used to flip an image along its axis. This method can be used to create mirror images or to change the orientation of an image. The method takes three arguments: the image to be flipped, a boolean value indicating whether to flip the image horizontally, and a boolean value indicating whether to flip the image vertically. Syntax: ``` pygame.transform.flip(surface, xbool, ybool) ``` - surface: The image to be flipped. - xbool: A boolean value indicating whether to flip the image horizontally (True or False). - ybool: A boolean value indicating whether to flip the image vertically (True or False). Example: ``` import pygame pygame.init() # Set up the display display_width = 640 display_height = 480 game_display = pygame.display.set_mode((display_width, display_height)) # Load the image my_image = pygame.image.load("image.png") # Flip the image horizontally flipped_image = pygame.transform.flip(my_image, True, False) # Display the original and flipped images game_display.blit(my_image, (0, 0)) game_display.blit(flipped_image, (display_width/2, 0)) pygame.display.update() # Quit the game pygame.quit() ``` In the above example, we first load an image using the `pygame.image.load()` method. We then use the `pygame.transform.flip()` method to create a flipped version of the image by passing in `True` as the first argument to indicate that we want to flip the image horizontally. We then display both the original and flipped images using the `blit()` method. Finally, we update the display and quit the game.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值