gpt4 book ai didi

python - 如何使用 Pyglet 在 Python 中使 gif 动画匹配全屏窗口大小?

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:59 25 4
gpt4 key购买 nike

所以,几个小时前我发现 Pyglet 最适合我渲染 gif 动画,所以我是新手。我的问题是动画 gif 在全屏窗口中以其原始大小呈现,我需要使其匹配,但我不知道该怎么做,有帮助吗?我的代码:

import sys

import pyglet
from pyglet.window import Platform

if len(sys.argv) > 1:
animation = pyglet.image.load_animation(sys.argv[1])
bin = pyglet.image.atlas.TextureBin()
animation.add_to_texture_bin(bin)
else:
animation = pyglet.resource.animation('gaben.gif')
sprite = pyglet.sprite.Sprite(animation)

screen = Platform().get_default_display().get_default_screen()
window = pyglet.window.Window(width=screen.width, height=screen.height)
window.set_fullscreen(True)

pyglet.gl.glClearColor(1, 1, 1, 1)

@window.event
def on_draw():
window.clear()
sprite.draw()

pyglet.app.run()

我得到的结果

enter image description here

最佳答案

最简单的方法是使用 Sprite 对象的.scale
它能够根据图像的原始尺寸按比例缩放图像,如果您自己调整图像的大小,您无需担心映射数据或填充像素间隙。

为了帮助您开始,这是一个简单的实现示例:
(它看起来像这样:https://youtu.be/Ly61VvTZnCU)

import pyglet
from pyglet.window import Platform

monitor = Platform().get_default_display().get_default_screen()

sprite = pyglet.sprite.Sprite(pyglet.resource.animation('anim.gif'))

H_ratio = max(sprite.height, monitor.height) / min(sprite.height, monitor.height)
W_ratio = max(sprite.width, monitor.width) / min(sprite.width, monitor.width)

sprite.scale = min(H_ratio, W_ratio) # sprite.scale = 2 would double the size.
# We'll upscale to the lowest of width/height
# to not go out of bounds. Whichever
# value hits the screen edges first essentially.

window = pyglet.window.Window(width=monitor.width, height=monitor.height, fullscreen=True)

pyglet.gl.glClearColor(1, 1, 1, 1)

@window.event
def on_draw():
window.clear()
sprite.draw()

pyglet.app.run()

出于演示/测试目的,我删除了您的一些代码。
该代码绝不是完美的,但它有望让您深入了解其工作原理。

关于python - 如何使用 Pyglet 在 Python 中使 gif 动画匹配全屏窗口大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com