pygame.transform
# pygame.transform # # 用于改变surfaces形态的pygame模块 # 注意:下面操作的结果都将返回一个新的Surface????不要将返回结果覆盖原来的图像,如: # 图像 = pygame.transform.操作(图像..) # 应该这样: # 新图像 = pygame.transform.操作(图像..) # pygame.transform.flip - 垂直和水平翻转 # 垂直和水平翻转 # flip(Surface, xbool, ybool) -> Surface # 这可以通过垂直,水平或两者一起来翻转Surface。 翻转Surface是非破坏性的,并返回具有相同尺寸的新曲面。 # sur1 = pygame.transform.flip(sur, True, True) # 参数,X轴 和Y轴是否翻转 # pygame.transform.scale - 调整大小到新的分辨率 # 调整大小到新的分辨率 # scale(Surface, (width, height), DestSurface = None) -> Surface # 将Surface的大小调整为新分辨率。 这是一种快速扩展操作,不会对结果进行采样。 # 可以使用可选的目标Surface,而不是创建新的目标Surface。 如果你想反复缩放某些东西,这会更快。 但是, # 目标必须与传入的(width, height)大小相同。目标Surface也必须是相同的格式。 # sur1 = pygame.transform.scale(sur,(100,50),sur1) # 参数:1 要缩放的源,2 绽放后的大小 3 绽放到目标(可以省略,如果要绽放到目标的话 # 目标大小必须设置为绽放后的大小 # pygame.transform.rotate - 旋转图像 # 旋转图像 # rotate(Surface, angle) -> Surface # 未经过滤的逆时针旋转。 angle参数表示角度,可以是任何浮点值。 负角度量将顺时针旋转。 # 除非以90度的增量旋转,否则图像将被填充得更大以保持新的尺寸。 如果图像具有像素alpha,则填充区域将是透明的。 否则, # pygame将选择与Surface颜色键(colorkey)或左上角像素值匹配的颜色 # 参数是角度而不是弧度, # 说明:所有的surface都是一个横平竖直的矩形,旋转以后还是一个横平竖直的矩形,只是长、宽变了 # 所以,旋转后会出现位置偏移,怎么解决: # sur2 = pygame.transform.rotate(sur, rot) # x = 500 - sur2.get_size()[0] / 2 # y = 500 - sur2.get_size()[1] / 2 # screen.blit(sur2, (x, y)) # pygame.transform.rotozoom - 旋转+等比例绽放,太好了 # 过滤的缩放和旋转 # rotozoom(Surface, angle, scale) -> Surface # 这是组合的缩放和旋转变换。 生成的Surface将是一个过滤的32位Surface。 scale参数是一个浮点值,将乘以当前分辨率。 # 角度参数是一个浮点值,表示要旋转的逆时针度数。 负旋转角度将顺时针旋转。 # 参数: 45是旋转的角度,0.5是绽放比例。 # sur1 = pygame.transform.rotozoom(sur, 45, 0.5) # x = 500 - sur1.get_size()[0] / 2 # y = 400 - sur1.get_size()[1] / 2 # screen.blit(sur1, (x, y)) # 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,则抛出异常。 # 参数跟scale一样,就是放大后没有马赛克,马赛克被周围的像素填充了,但并没改变图像的清晰度,所以,没多大用, # pygame.transform.get_smoothscale_backend - 返回正在使用的smoothscale过滤器版本:‘GENERIC’,‘MMX’或’SSE’ # pygame.transform.set_smoothscale_backend - 将smoothscale过滤器版本设置为以下之一:‘GENERIC’,‘MMX’或’SSE’ # pygame.transform.chop - 获取移除的内部区域的图像副本 # 获取移除的内部区域的图像副本 # chop(Surface, rect) -> Surface # 提取图像的一部分。 围绕给定矩形区域的所有垂直和水平像素都被移除。 然后将角落区域(与矩形对角线)放在一起。 (此操作不会更改原始图像。) # 注意:如果您想要一个“crop(裁剪)”返回矩形内图像的一部分,您可以使用矩形blit到新surface或复制子surface # 把指定矩形的区域剪掉 # sur1 = pygame.transform.chop(sur, (0, 0, 500, 500)) # pygame.transform.laplacian - 在surface中查找边 # 在surface中查找边 # laplacian(Surface, DestSurface = None) -> Surface # 使用拉普拉斯算法查找曲面中的边。 # 注意,只能查找24位通道的图像,不能查找32位alpha的图像,所以,需要:.convert(),不能.convert_alpha() # pygame.transform.average_surfaces - 从许多surface中找到平均surface。 # sur = pygame.transform.scale(sur, (500,300)) # sur2 = pygame.transform.scale(sur2, (500, 300)) # sur1 = pygame.transform.average_surfaces((sur,sur2)) # 把多个图像混合在一起,小心,多个图片的大小要一样,否则崩溃 # pygame.transform.average_color - 查找surface的平均颜色 # 计算图像的平均颜色,注意了,返回的是一个list(),记录颜色信息。 # pygame.transform.threshold - 查找表面中的哪些像素以及多少像 # 在’search_color’或’search_surf’的阈值内。 # https://blog.csdn.net/enderman_xiaohei/article/details/88282456 # # surface变换是移动像素或调整像素大小的操作。 所有这些函数都使用Surface进行操作并返回带有结果的新Surface。 # 一些变换被认为是破坏性的。 这意味着每次执行它们都会丢失像素数据。 常见的例子是调整大小和旋转。 因此,重新转换原始surface比保持多次转换图像更好。 # (例如,假设您正在为一个弹跳弹簧进行动画扩展和收缩。如果您将大小更改应用于前一个图像,则会丢失细节。相反,始终从原始图像开始并缩放到所需大小。)