Python pygame实现图像基本变换的示例详解

 更新时间:2023年11月30日 10:33:35   作者:微小冷  
pygame的transform中封装了一些基础的图像处理函数,这篇文章主要为大家介绍了pygame实现图像的基本变换,例如缩放、旋转、镜像等,感兴趣的小伙伴可以了解一下

函数列表

pygame的transform中封装了一些基础的图像处理函数,列表如下

函数功能
flip镜像
scale缩放至新的分辨率
scale_by根据因子进行缩放
scale2x专业图像倍增器
rotate旋转
rotozoom缩放并旋转
smoothscale平滑缩放
smoothscale_by平滑缩放至新的分辨率
chop获取已删除内部区域的图像的副本
laplacian边缘查找
average_surfaces多个图像求均值
average_color图像颜色的均值
grayscale灰度化
threshold在某个阈值内的像素个数

图像显示

为了演示这些功能效果,先通过pygame做一个显示图像的函数

import pygame

def showImg(img):
    pygame.init()
    rect = img.get_rect()
    screen = pygame.display.set_mode((rect.width, rect.height))
    while True:
        for e in pygame.event.get():
            if e.type==pygame.QUIT:
                pygame.quit()
                return
        screen.blit(img, rect)
        pygame.display.flip()


ball = pygame.image.load("intro_ball.gif")
showImg(ball)

翻转

flip用于翻转,除了输入图像之外,还有两个布尔型参数,分别用于调控水平方向和竖直方向,True表示翻转,False表示不翻转。

import pygame.transform as pt
xFlip = pt.flip(ball, True, False)
yFlip = pt.flip(ball, False, True)
xyFlip = pt.flip(ball, True, True)

效果分别如下

缩放

相对于镜像来说,在游戏中,缩放显然是更加常用的操作。在transform模块中,提供了两种缩放方案

scale(surface, size, dest_surface=None)

scale_by(surface, factor, dest_surface=None)

其中,scale将原图像缩放至给定的size;scale_by则根据给定的factor来对图像进行缩放,如果factor是一个数字,那么将对两个方向进行同样的缩放,如果是一个元组,比如 ( 3 , 4 ) (3,4) (3,4),那么对两个维度分别缩放3倍和4倍。示例如下

xScale = pt.scale_by(ball, (2,1))
yScale = pt.scale(ball, (111,222))

此外,smoothscale和smoothscale_by在缩放的基础上,进行了双边滤波平滑,使得缩放看上去更加自然,

旋转

通过rotate可以对图像进行旋转,其输入参数有二,分别是待旋转图像与旋转角度。这个功能可以无缝插入到前面的平抛运动中,即让球在平抛时有一个旋转,示例如下

代码如下

import time

pygame.init()

size = width, height = 640, 320
speed = [10, 0]

screen = pygame.display.set_mode(size)

ball = pygame.image.load("intro_ball.gif")
rect = ball.get_rect()

th = 0
while True:
    if pygame.QUIT in [e.type for e in pygame.event.get()]:
        break
    time.sleep(0.02)
    rect = rect.move(speed)
    if rect.right>width:
        speed = [10, 0]
        rect = ball.get_rect()
    if rect.bottom>height:
        speed[1] = -speed[1]
    speed[1] += 1
    th += 5
    screen.fill("black")
    screen.blit(pt.rotate(ball, th), rect)
    pygame.display.flip()

pygame.quit()

到此这篇关于Python pygame实现图像基本变换的示例详解的文章就介绍到这了,更多相关Python pygame图像变换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python正则表达式分组

    Python正则表达式分组

    这篇文章主要介绍了Python正则表达式分组,命名分组,后向引用,前向否定断言、后向否定断言需要的朋友可以参考下
    2022-12-12
  • Python搭建代理IP池实现存储IP的方法

    Python搭建代理IP池实现存储IP的方法

    这篇文章主要介绍了Python搭建代理IP池实现存储IP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Flask框架中的session设置详解

    Flask框架中的session设置详解

    Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用 Jinja2 。Flask使用BSD授权。Flask也被称为 “microframework”,因为它使用简单的核心,用extension增加其他功能
    2023-02-02
  • Python中threading库实现线程锁与释放锁

    Python中threading库实现线程锁与释放锁

    threading用于提供线程相关的操作,为了保证安全的访问一个资源对象,我们需要创建锁。那么Python线程锁与释放锁如何实现,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • python os.path模块常用方法实例详解

    python os.path模块常用方法实例详解

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。感兴趣的朋友跟随小编一起看看吧
    2018-09-09
  • Python sklearn中的.fit与.predict的用法说明

    Python sklearn中的.fit与.predict的用法说明

    这篇文章主要介绍了Python sklearn中的.fit与.predict的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 详解用Python为直方图绘制拟合曲线的两种方法

    详解用Python为直方图绘制拟合曲线的两种方法

    这篇文章主要介绍了详解用Python为直方图绘制拟合曲线的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python jieba库文本处理词性标注和关键词提取进行文本情感分析

    Python jieba库文本处理词性标注和关键词提取进行文本情感分析

    这篇文章主要为大家介绍了Python使用中文文本处理利器jieba库中的词性标注和关键词提取功能进行文本情感分析实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python基本知识点总结

    Python基本知识点总结

    这篇文章主要介绍了Python基本知识点总结,Python基本知识,Python字符串,Python函数,Python模块,Python创建类,Python类的继承,Python重载,Python单下划线说明,Python双下划线说明,Python头尾双下划线说明,需要的朋友可以参考下
    2022-04-04
  • python爬虫爬取指定内容的解决方法

    python爬虫爬取指定内容的解决方法

    这篇文章主要介绍了python爬虫爬取指定内容,爬取一些网站下指定的内容,一般来说可以用xpath来直接从网页上来获取,但是当我们获取的内容不唯一的时候我们无法选择,我们所需要的、所指定的内容,需要的朋友可以参考下
    2022-06-06

最新评论