I'm working on a short intro in PyGame, and I need to blur some static lines. After two days of searching, I can't find anything.
Does PyGame have a built-in method to blur a shape or surface? Will I need to do it manually? What would be the best way to approach this?
To clarify, I'm not looking for motion blur – I just need a simple in-place blur, almost like a glowing effect.
2023 update: If you're using pygame-ce, the functions
pygame.transform.box_blur
andpygame.transform.gaussian_blur
were added in the 2.2.0 release.There's no built-in way to blur a
Surface
.Workarounds are:
scale the
Surface
withpygame.transform.smoothscale
and then back to its original size (ugly)iterating over each pixel, get the color of the neighbour pixels, calculate the average value for red, green, and blue, and set the color of that pixel (slow as hell if not using something like
numpy
)I recommend using the Python Imaging Library (PIL), since it's nice and fast.
Here's a simple and running example:
Hint: If you're on Windows and want to install PIL, download it from here and install it via
or whatever version you downloaded (installing PIL on Windows can be a great PITA otherwise).