我正在PyGame上做一个简短的介绍,我需要模糊一些静态线条。经过两天的搜索,我什么都找不到。
PyGame是否具有内置的方法来模糊形状或表面?我需要手动进行吗?解决此问题的最佳方法是什么?
需要说明的是,我并不是在寻找运动模糊–我只需要一个简单的原位模糊,就像发光的效果一样。
没有内置的模糊方法Surface
。
解决方法是:
缩放Surface
with pygame.transform.smoothscale
,然后恢复到原始大小(丑陋)
遍历每个像素,获取相邻像素的颜色,计算红色,绿色和蓝色的平均值,然后设置该像素的颜色(如果不使用,则慢到地狱numpy
)
我建议使用Python Imaging Library(PIL),因为它既好又快速。
这是一个简单而运行的示例:
import pygame
from PIL import Image, ImageFilter
pygame.init()
screen = pygame.display.set_mode((512, 512))
clock = pygame.time.Clock()
compressed = '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'
size, image_mode, raw = (128, 128), 'RGBA', compressed.decode("base64").decode("zlib")
# create the original pygame surface
surf = pygame.image.fromstring(raw, size, image_mode)
# create a PIL image and blur it
pil_blured = Image.fromstring("RGBA", size, raw).filter(ImageFilter.GaussianBlur(radius=6))
# convert it back to a pygame surface
other = pygame.image.fromstring(pil_blured.tostring("raw", image_mode), size, image_mode)
pygame.time.set_timer(pygame.USEREVENT, 1000)
while True:
for e in pygame.event.get():
if e.type == pygame.USEREVENT: surf, other = other, surf
if e.type == pygame.QUIT: break
else:
screen.fill((255, 255, 255))
screen.blit(surf, (192, 192))
pygame.display.flip()
clock.tick(60)
continue
break
提示:如果您使用的是Windows,并且要安装PIL,请从此处下载并通过进行安装
pip install Pillow-2.8.2-cp27-none-win32.whl
或您下载的任何版本(否则,在Windows上安装PIL可能是一个不错的PITA)。
问题内容: 我已经从Pygame网站下载了。我解压缩并安装了它,并且在Terminal(Ubuntu)的命令行Python解释器中工作正常。但我想为某些IDE(例如PyCharm)安装它。我该怎么做? 问题答案: 好吧,您不必在这里为PyCharm下载它。您可能知道它如何检查您的代码。通过口译员!您不需要使用复杂的命令行或类似的东西。您需要的是: 下载 包含 PyGame的适当解释器 打开您的Py
我在MacOS上,试图安装pygame,但一直收到“没有名为‘pygame’的模块”错误。 在终端中开始,使用 它报告了错误: 一些答案暗示pygame与我当前的python版本3.8不兼容。于是我安装了python3.7.7,成功安装了pygame。数字一(one) 使用运行测试 终端显示<code>OK</code>。2. 我尝试在 pycharm 中运行一个项目并在 IDLE 中,两者都给了
Pygame 使用 显示模块中的方法创建游戏的主窗口: 上述函数有两个参数常用参数: size:元组参数,用来设置主窗口的大小 flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口、无边框窗口等,flags 参数值见下表。 标志位 功能 pygame.FULLSCREEN 创建一个全屏窗口。 pygame.HWSURFACE 创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用。
简单的代码,但仍然不能弄清楚哪里出了问题,它说模块pygame没有成员退出,退出
我在华硕的Windows 10上。我正在使用python 3.8。我在另一台计算机上成功安装了pygame(联想瑜伽,相同的操作系统)并且工作正常。然后我尝试使用 pip 在这台计算机(华硕)上安装相同的软件包,并且工作得很好。问题是当我尝试在 中导入 时,模块似乎没有退出 在python控制台上导入或使用默认IDLE可以正常工作。我还尝试从Pycharm导入包,既使用快速修复程序,又转到文件 安
在MACBOOK上安装PYGAME时,尽管我在MAC上安装了Xcode,但还是出现了以下错误。我试图用pip命令安装pygame。 蟒蛇版本是3.7.3 pip和蟒蛇都在同一个文件夹中 用于安装的命令是:pip install pygame 收集pygame使用缓存 https://files.pythonhosted.org/packages/0f/9c/78626be04e193c062484
本文向大家介绍python pygame模块编写飞机大战,包括了python pygame模块编写飞机大战的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python pygame模块编写飞机大战的具体代码,供大家参考,具体内容如下 该程序没有使用精灵组,而是用列表存储对象来替代精灵组的动画效果。用矩形对象的重叠来判断相撞事件。该程序可以流畅运行,注释较为详细,希望可以帮助大家。 以
我无法导入内部 我一直在使用Linux Mint 19、Anaconda 3、pycharm 2019.3.1。 我创建了一个conda环境并安装了pygame: 然后我运行了。我得到了以下错误: 在互联网上读了一些博客后,我安装了, 之后如果我运行在我的conda环境的Linux终端上,我的代码成功运行。 但是如果我尝试在中运行相同的代码,我会得到以下错误: /home/tiago/anacon