【问题标题】:Save image or animation in pyglet在 pyglet 中保存图像或动画
【发布时间】:2020-04-26 07:32:33
【问题描述】:

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

【问题讨论】:

  • by gif,我特别指的是动画类型的 gif。有没有pygletanimation.save(filename)这样的东西?

标签: python-2.7 save gif pyglet


【解决方案1】:

我在每一帧都使用这个功能:

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

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

 #---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()

【讨论】:

  • 它会将整个 gif 文件保存为单个文件吗?还是逐帧?
  • 所以它会给我一系列.png。然后我必须以艰难的方式将其加载为动画,而不是保存.gif。有没有办法在显示文件之前立即复制文件?将 gif 保存为 gif 对我来说有点重要。 jpg、bmp、png 等都可以简化为 png,但我需要 gif 以保持 gif 格式。
【解决方案2】:

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

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

更多信息请参见https://www.imagemagick.org/Usage/anim_basics/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2019-08-11
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多