
Research
/Security News
Toptal’s GitHub Organization Hijacked: 10 Malicious Packages Published
Threat actors hijacked Toptal’s GitHub org, publishing npm packages with malicious payloads that steal tokens and attempt to wipe victim systems.
A pygame addon that allows you to load, animate, and render animated image files like .gif and .apng
# example code
import pygame, sys, gif_pygame
win = pygame.display.set_mode((512, 512))
example_gif = gif_pygame.load("example.gif") # Loads a .gif file
example_png = gif_pygame.load("example.png") # Loads a .png file, the module supports non-animated files, but it is not recommended
s1 = pygame.Surface((66, 66))
s2 = pygame.Surface((66, 66))
s3 = pygame.Surface((66, 66))
s1.fill((255, 0, 0))
s2.fill((0, 255, 0))
s3.fill((0, 0, 255))
example_surfs = gif_pygame.GIFPygame([(s1, 1), (s2, 1), (s3, 1)])
clock = pygame.Clock()
while True:
clock.tick(60)
win.fill((0, 0, 0))
# There are 2 ways of rendering the animated img file, the first method is doing "gif.render(surface, (x, y))", the other method is doing "surface.blit(gif.blit_ready(), (x, y))". THE ".blit_ready()" FUNCTION MUST BE CALLED WHEN DOING THE SECOND METHOD
example_gif.render(win, (128-example_gif.get_width()*0.5, 256-example_gif.get_height()*0.5))
example_png.render(win, (256-example_png.get_width()*0.5, 256-example_png.get_height()*0.5))
win.blit(example_surfs.blit_ready(), (384-example_surfs.get_width()*0.5, 256-example_surfs.get_height()*0.5))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
if example_gif.paused: # Check whether `example_gif` is paused or not
example_gif.unpause() # unpauses `example_gif` if it was paused
else:
example_gif.pause() # pauses `example_gif` if it was unpaused
if example_png.paused: # Check whether `example_png` is paused or not, since this is a non-animated image, it will not be affected
example_png.unpause() # unpauses `example_png` if it was paused, since this is a non-animated image, it will not be affected
else:
example_png.pause() # pauses `example_png` if it was unpaused, since this is a non-animated image, it will not be affected
if example_surfs.paused: # Check whether `example_surfs` is paused or not
example_surfs.unpause() # unpauses `example_surfs` if it was paused
else:
example_surfs.pause() # pauses `example_surfs` if it was unpaused
pygame.display.flip()
To recap:
gif_pygame.load
loads in the image
To render the image you've got 2 options:
img.render(surf, (x, y))
surf.blit(img.blit_ready(), (x, y))
(.blit_ready()
can be used to return the current frame's surface)There are other extra functions. The ones showcased in the example code are img.pause()
and img.unpause()
.
There are also:
GIFPygame().get_width()
, returns the width of the imageGIFPygame().get_height()
, returns the height of the imageGIFPygame().get_size()
, returns the size of the imageGIFPygame().get_rect()
, returns the rect of the imageGIFPygame().get_surfaces()
, returns a list of all surfaces in the animation, you can also pass in certain indexesGIFPygame().get_durations()
, returns a list of all durations in the animation, you can also pass in certain indexesGIFPygame().get_surfaces()
, returns a list of all surfaces in the animation, you can also pass in certain indexesGIFPygame().get_durations()
, returns a list of all durations in the animation, you can also pass in certain indexesGIFPygame().get_datas()
, returns a list of all surfaces and durations in the animation, you can also pass in certain indexesGIFPygame().get_alphas()
, returns a list of that includes the alphas of all surfaces in the animation, you can also pass in certain indexesgif_pygame.transform
, a sublibrary for editing the surfaces.Please use python's help()
function for more in-depth explanation
(A documentation will be added soon)
FAQs
A pygame addon for animated image files
We found that gif-pygame demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Threat actors hijacked Toptal’s GitHub org, publishing npm packages with malicious payloads that steal tokens and attempt to wipe victim systems.
Research
/Security News
Socket researchers investigate 4 malicious npm and PyPI packages with 56,000+ downloads that install surveillance malware.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.