在 pyglet 中保存图像或动画

Save image or animation in pyglet

我有图像保存问题。我需要输入 bmp、jpg、png 或 gif 并显示它。显示部分相当简单,难的是保存它。我想获取用户提供的文件并将其保存在一个压缩目录中,该目录将成为该项目的保存文件。我看到我可以执行 pygletimage.save(filename) 并获取 png 文件。我对静止图像的格式更改很好。问题是,如何在pyglet中轻松保存gif文件?

我在每一帧都使用这个函数:

pyglet.image.get_buffer_manager().get_color_buffer().save(filename)

这是完整的片段。它将您显示的任何内容保存到编号的图像文件中。

 #---EXPORT --------------------------------------------------------

    def save_a_frame(self):
            file_num=str(self.frame_number).zfill(5)
            file_t=str(self.chrono)
            filename="frame-"+file_num+'-@ '+file_t+'sec.png'
            pyglet.image.get_buffer_manager().get_color_buffer().save(filename)
            print 'image file writen : ',filename

    def export_loop(self,dt):
        constant_interval=1.0/PicPS
        if self.chrono<END_TIME:
            # update at a constant dt, regardless of real time
            # so that even if refresh is slow no frame should be missing
            # self.frame_draw(PicPS)
            self.update(constant_interval)
            self.frame_draw(dt)
            self.frame_number+=1
            self.save_a_frame()
        else:
            exit()

您可以通过 pygletimage.save() 方法将每个帧保存为 PNG,然后使用 imagemagick 命令行工具将它们组合成 GIF,如下所示:

convert -delay 10 -loop 0 frame_*.png animation.gif

有关详细信息,请参阅 https://www.imagemagick.org/Usage/anim_basics/