我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Pygame transform模块入门介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Pygame transform模块入门介绍

简介

pygame模块用于变换Surface,Surface变换是一种移动或调整像素大小的操作。所有这些函数都是对一个Surface进行操作, 并将结果返回一个新的Surface。

有些变换被认为是破坏性的。这意味着每次执行这些变换都会丢失像素数据。常见的例子是调整大小和旋转。出于这个原因, 重新变换原始Surface比继续多次变换图像要好。(例如, 假设您正在制作一个弹跳弹簧的动画, 它将膨胀和收缩。如果您将尺寸变化逐步应用于之前的图像, 您将失去细节。相反, 总是从原始图像开始, 然后缩放到所需的大小。)

下面看一组简单的演示示例:

import pygame
#引入pygame中所有常量,比如 QUIT
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500,250))
pygame.display.set_caption('pygame transform')
#加载一张图片(455*191)
image_surface = pygame.image.load("sky_shoot/img/playerShip1_orange.png").convert()
image_new = pygame.transform.scale(image_surface,(100,75))
# 查看新生成的图片的对象类型
#print(type(image_new))
# 对新生成的图像进行旋转至45度
image_1 =pygame.transform.rotate(image_new,45)
# 使用rotozoom() 旋转 0 度,将图像缩小0.5倍
image_2 = pygame.transform.rotozoom(image_1,0,0.5)
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    # 将最后生成的image_2添加到显示屏幕上
    screen.blit(image_2,(0,0))
    pygame.display.update()

程序的运行结果如下:

函数说明

  • pygame.transform.flip()

翻转Surface

flip(Surface,xbool,ybool)->Surface

此功能可以垂直、水平或同时翻转一个Surface。翻转Surface是非破坏性的, 并返回一个具有相同尺寸的新Surface。

  • pygame.transform.scale()

调整到新的分辨率

scale(Surface, (width, height), DesSurface=None)->Surface

将Surface调整为新的分辨率。这是一个不对结果进行采样的快速缩放操作。可以使用一个可选的目标Surface, 而不是让它创建一个新的Surface。如果你想重复缩放一些东西, 这样会更快。但是, 目标Surface的大小必须与传入的(宽、高)相同。而且目标Surface必须是相同的格式。

  • pygame.transform.rotate()

rotate(surface, angle) -> Surface

未经过滤的逆时针旋转。角度参数代表度数, 可以是任何浮点值。负的角度值将顺时针旋转。除非以90度为增量旋转, 否则图像将被垫大以保持新的尺寸。如果图像有象素, 填充区域将是透明的。否则, pygame将选择与Surface colorkey或topleft像素值相匹配的颜色。

  • pygame.transform.rotozoom()

rotozoom(surface, angle, scale) -> Surface

这是一个结合了缩放和旋转的变换。得到的Surface是一个过滤后的32位Surface。刻度参数是一个浮点数, 将乘以当前的分辨率。角度参数是一个浮点值, 代表要旋转的逆时针度数。负的旋转角度将顺时针旋转。

  • pygame.transform.scale2x()

scale2x(surface, dest_surface=None) -> Surface

这将返回一个新的图像, 其大小是原来的两倍。它使用AdvanceMAME Scale2X算法, 对位图图形进行 "无锯齿 "缩放。这实际上只对纯色的简单图像有影响。在摄影和反锯齿图像上, 它将看起来像一个普通的未经过滤的规模。可以使用一个可选的目标Surface, 而不是让它创建一个新的Surface。如果您想重复缩放某些Surface, 这样做会更快。但是目标Surface的大小必须是传入的源Surface的两倍。而且目标Surface必须是相同的格式。

  • pygame.transform.smoothscale()

平滑地缩放一个任意大小的Surface。

smoothscale(surface, size, dest_surface=None) -> Surface

使用两种不同的算法之一来按需缩放输入Surface的每个尺寸。为了缩小,输出像素是它们覆盖的颜色的面积平均值。为了扩展,使用双线性滤波器。对于x86-64和i686体系结构,包含了优化的 MMX 例程,它们的运行速度比其他计算机类型快得多。大小是2个数字的序列(宽度,高度)。此功能仅适用于24位或32位Surface。如果输入Surface位深度小于24,则将引发异常。pygame 1.8中的新功能。

  • pygame.transform.get_smoothscale_backend()

返回正在使用的smoothscale滤波器版本。‘GENERIC’, ‘MMX’, 或 ‘SSE’。

get_smoothscale_backend() -> string

显示平滑缩放是否正在使用 MMXSSE 加速。如果没有可用的加速度,则返回“ GENERIC”。对于x86处理器,要在运行时确定要使用的加速级别。该函数用于pygame的测试和调试。

  • pygame.transform.set_smoothscale_backend()

将平滑尺度过滤器版本设置为:“GENERIC”、"MMX "或 "SSE "之一。‘GENERIC’, ‘MMX’, 或 ‘SSE’.

set_smoothscale_backend(backend) -> None

设置平滑比例加速度。采用字符串参数。值“ GENERIC”将关闭加速。“ MMX” 仅使用 MMX 指令。'SSE’也允许 SSE 扩展。如果当前处理器无法识别或不支持类型,则会引发值错误。这个函数是为了pygame测试和调试而提供的。如果 smoothscale 导致无效指令错误, 那么这是一个 pygame/SDL 错误, 应该被报告。仅将此函数用作临时修复。

  • pygame.transform.chop()

获取一个去掉内部区域的图像副本。

chop(surface, rect) -> Surface

提取图像的一部分。删除给定矩形区域周围的所有垂直和水平像素。然后将角区域(矩形的对角线)合并。此操作不会改变原始图像)。NOTE :如果需要“裁切”来返回rect中图像的一部分,则可以使用rect剪切到新Surface或复制次Surface。

  • pygame.transform.laplacian()

寻边

laplacian(surface, dest_surface=None) -> Surface

使用大写字母算法来寻找Surface的边缘。pygame 1.8中的新功能。

  • pygame.transform.average_surfaces()

从许多Surface中找出平均Surface。

average_surfaces(surfaces, dest_surface=None, palette_colors=1) -> Surface

取一个Surface的序列, 并返回每个Surface的平均颜色的Surface。palette_colors-如果为真, 我们对调色板中的颜色进行平均, 否则我们对像素值进行平均。如果Surface实际上是灰度颜色, 而不是调色板颜色, 这很有用。注意, 这个函数目前不能正确处理使用Surface的调色板。pygame 1.8中的新功能。pygame 1.9的新功能: palette_colors 参数

  • pygame.transform.average_color()

找到Surface的平均颜色

average_color(surface, rect=None) -> Color

查找Surface或矩形指定的Surface区域的平均颜色, 并以颜色返回。

  • pygame.transform.threshold()

查找Surface中哪些像素和多少像素在 "search_color "或 "search_surf "的阈值之内。

threshold(dest_surface, surface, 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’Surface, 它被用来针对而不是指定的’set_color’进行阈值化。也就是说, 它将在’surf’中找到每一个在’search_surf’相同坐标的像素的’阈值’内的像素。

Parameters:

dest_surf(pygame.Surface或**None)-我们正在更改的Surface。参见“ set_behavior”。如果计数(set_behavior为0),则应为None。

surf(pygame.Surface)-我们正在查看的Surface。

search_color(pygame.Color)-我们正在寻找的颜色。

threshold(pygame.Color)-在距search_color(或search_surf)距离之内。您可以使用阈值(r,g,b,a),其中r,g,b可以具有不同的阈值。因此,您可以根据需要使用r阈值40和蓝色阈值2。

set_color(pygame.Color或**None)-我们在dest_surf中设置的颜色。

set_behavior(int)-set_behavior=1 (默认)。dest_surface中的像素将被改为’set_color’。set_behavior=0 我们不改变’dest_surf’, 只是计数。让dest_surf=None。set_behavior=2在’dest_surf’中设置的像素将从’surf’。

search_surf(pygame.Surface或**None)-search_surf=None(默认)。用’search_color’代替搜索。search_surf=Surface。看’search_surf’中的颜色, 而不是使用’search_color’。

inverse_set(bool)-False, 默认值。阈值外的像素会被改变。True, 在阈值内的像素被改变。

Return type:int

Returns:

‎与“search_color‎‎”或search_surf‎‎相比,“surf”中“阈值”内的像素数。‎search_surf.

Examples:请参阅阈值测试以获取完整的示例

def test_threshold_dest_surf_not_change(self):
        """ the pixels within the threshold.
        All pixels not within threshold are changed to set_color.
        So there should be none changed in this test.
        """
        (w,  h) = size = (32,  32)
        threshold = (20,  20,  20,  20)
        original_color = (25,  25,  25,  25)
        original_dest_color = (65,  65,  65,  55)
        threshold_color = (10,  10,  10,  10)
        set_color = (255,  10,  10,  10)
        surf = pygame.Surface(size,  pygame.class="lazy" data-srcALPHA,  32)
        dest_surf = pygame.Surface(size,  pygame.class="lazy" data-srcALPHA,  32)
        search_surf = pygame.Surface(size,  pygame.class="lazy" data-srcALPHA,  32)
        surf.fill(original_color)
        search_surf.fill(threshold_color)
        dest_surf.fill(original_dest_color)
        # set_behavior=1,  set dest_surface from set_color.
        # all within threshold of third_surface,  so no color is set.
        THRESHOLD_BEHAVIOR_FROM_SEARCH_COLOR = 1
        pixels_within_threshold = pygame.transform.threshold(
            dest_surface=dest_surf, 
            surface=surf, 
            search_color=None, 
            threshold=threshold, 
            set_color=set_color, 
            set_behavior=THRESHOLD_BEHAVIOR_FROM_SEARCH_COLOR, 
            search_surf=search_surf, 
        )
        # # Return,  of pixels within threshold is correct
        self.assertEqual(w * h,  pixels_within_threshold)
        # # Size of dest surface is correct
        dest_rect = dest_surf.get_rect()
        dest_size = dest_rect.size
        self.assertEqual(size,  dest_size)
        # The color is not the change_color specified for every pixel As all
        # pixels are within threshold
        for pt in test_utils.rect_area_pts(dest_rect):
            self.assertNotEqual(dest_surf.get_at(pt),  set_color)
            self.assertEqual(dest_surf.get_at(pt),  original_dest_color)

到此这篇关于Pygame transform模块入门介绍的文章就介绍到这了,更多相关Pygame transform模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Pygame transform模块入门介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python_模块介绍

模块:一组或者一个.py文件实现了某个功能的代码集合模块分为三种:自定义模块内置标准模块(又称标准库):Python自带的模块开源模块:自己写的模块,有可以供人使用的功能开源模块的集散地:Python官网:pypi.python.org上传
2023-01-30

GNS3入门介绍

第一次遇到GNS3,对它并没有多大的兴趣,因为思科模拟器用过几个,觉得都差不多,再牛的模拟器应该也牛不过cisco官方的packet tracer吧,在做备份IOS实验时发现好像目前只有这个名不见经传的GNS3有这个能力,让我不觉的多看了它
2023-01-31

Python之模块介绍

模块:用一段代码实现了某些功能的代码集合。Python模块分为三种:自定义模块内置标准模块开源模块os模块:提供对操作系统进行调用的接口,以下是方法os.getcwd() :获取当前工作目录,即当前python脚本工作的目录路径示例:>>>
2023-01-31

python如何导入pygame模块

这篇文章将为大家详细讲解有关python如何导入pygame模块,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pytho
2023-06-14

Python Fabric 模块 介绍及

来源:《Python自动化运维》Fabric的安装Fabric支持pip、easy_install或源码安装方式,很方便解决包依赖的问题,具体安装命令如下(根据用户环境,自行选择pip或easy_install):pip install f
2023-01-31

python导入pygame模块的方法

这篇“python导入pygame模块的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python导入pygame模块的
2023-06-30

python模块介绍- socket(1

底层的socket库可以直接访问本地Csocket库并且可与任何网络服务通信。select同时监控多个sockets,支持网络服务和多个客户端通信。SocketServer框架抽象了很多创建网络服务器的重复工作。该类来可以使用fork或者线
2023-01-31

MongoDB入门(介绍、安装)

一.什么是MongoDB?MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that
MongoDB入门(介绍、安装)
2017-08-27

python入门之python介绍

python基础之Python优点    1.简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。    2.易学:Python极其容易上手,
2023-01-31

Python 模块EasyGui详细介绍

Python 模块EasyGui详细介绍 前言: 在Windows想用Python开发一些简单的界面,所以找到了很容易上手的EasyGui库。下面就分享一下简单的使用吧。 参考的链接:官网Tutorial 接下来,我将从简单,到复杂一点点的
2022-06-04

python模块itsdangerous简单介绍

这篇文章主要介绍了python模块itsdangerous简单介绍,本文通过案例分析给大家详细讲解,对python模块itsdangerous相关知识感兴趣的朋友一起看看吧
2022-11-16

Python3 日历(Calendar)模块介绍

导读此模块的函数都是日历相关的,例如打印某月的字符月历。星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。模块包含了以下内置函数:序号函数及描述1calendar.ca
2023-06-02

接入层Nginx架构及模块介绍分享

课程目标:1)帮助大家对Nginx有一定的认识2)熟悉Nginx有哪些应用场景3)熟悉Nginx特点和架构模型以及相关流程4)熟悉Nginx定制化开发的几种模块分类课程大纲:Nginx简介及特点Nginx应用场景Nginx框架模型介绍Ngi
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录