Pygame 图像变换
pygame.transform 模块包含一些用于操作从图像或文本生成的 Surface 对象的函数定义。对于一个表面对象的操作包括翻转、旋转、缩放、调整大小和缩放。
以下函数可以在 pygame.transform 模块中找到。
flip() | 垂直和水平翻转 |
---|---|
scale() | 调整为新分辨率大小 |
rotate() | 旋转图像 |
rotozoom() | 过滤的缩放和旋转 |
scale2x() | 专用图像放大器 |
smoothscale() | 平滑地将表面缩放到任意大小 |
get_smoothscale_backend() | 返回正在使用的平滑缩放过滤器版本 – ‘GENERIC’、’MMX’或’SSE’ |
set_smoothscale_backend() | 将平滑缩放过滤器版本设置为’GENERIC’、’MMX’或’SSE’之一 |
chop() | 获得一个删除了内部区域的图像副本 |
laplacian() | 在表面中找到边缘 |
average_surfaces() | 从多个表面中找到平均表面。 |
average_color() | 找到表面的平均颜色 |
threshold() | 找到表面中在 ‘search_color’ 或 ‘search_surf’ 的阈值范围内的像素点,并计算其数量 |
让我们首先使用flip()函数,其语法如下所示:-
此函数可以水平、垂直或同时翻转表面对象。方向由两个布尔参数决定。
要水平翻转图像,请使用以下命令−
要垂直翻转,请使用以下命令 –
在以下示例中,pygame标志图像以正常和两个方向上翻转的方式显示。首先从原始图像对象获取翻转后的表面,然后获取其Rect对象并建立它。要呈现水平翻转的图像,
示例
渲染原始Pygame标志及其翻转图像的完整代码如下所示−
输出
rotate()函数接受以下参数:
示例
角度的负值会顺时针旋转物体表面。
输出
示例
laplacian()函数提取表面对象的轮廓。该函数只需要一个参数,即图像对象本身。
输出
为了使Surface对象随着鼠标移动而移动,我们从图像的中心计算x和y坐标。我们还计算中心-鼠标距离d。使用atan2(y, x)数学函数可以找到旋转角度。我们需要将弧度转换为度数。根据鼠标-中心距离,我们计算比例参数。
最后,我们使用rotzoom()函数执行了组合旋转和缩放变换。
示例
下面的代码可以呈现Pygame的标志图像,并根据鼠标移动进行旋转。
输出
运行上述代码,试着将鼠标光标沿着显示窗口移动。图像将会根据鼠标的移动而旋转并且缩小或放大。