Загрузка изображения с помощью Pyglet

Я играю с pyglet 1.2alpha-1 и Python 3.3. У меня есть следующее (очень простое) приложение, и я не могу понять, в чем моя проблема:

import pyglet

window = pyglet.window.Window()
#image = pyglet.resource.image('img1.jpg')
image = pyglet.image.load('img1.jpg')
label = pyglet.text.Label('Hello, World!!',
                      font_name='Times New Roman',
                      font_size=36,
                      x=window.width//2, y=window.height//2,
                      anchor_x='center', anchor_y='center')

@window.event
def on_draw():
    window.clear()
    label.draw()
    #    image.blit(0,0)

pyglet.app.run()

С приведенным выше кодом моя текстовая метка будет отображаться до тех пор, пока image.blit(0, 0) закомментирован. Однако, если я пытаюсь отобразить изображение, программа вылетает со следующей ошибкой:

  File "C:\Python33\lib\site-packages\pyglet\gl\lib.py", line 105, in errcheck
raise GLException(msg)
pyglet.gl.lib.GLException: b'invalid value'

Я также получаю указанную выше ошибку, если пытаюсь использовать pyglet.resource.image вместо pyglet.image.load (изображение и файл py находятся в одном каталоге).

Кто-нибудь знает, как я могу решить эту проблему?

Я использую Python 3.3, pyglet 1.2alpha-1 и Windows 8.


person Mike Caputo    schedule 07.07.2013    source источник
comment
Я сталкиваюсь с той же ошибкой, хотя я узнал, какие условия ее вызывают (но не исправление). Я использую Windows 7, Python 2.7.11, Pyglet 1.2.4. У меня был код, работающий в Linux, который сломался в Windows. Отладив его, я, наконец, обнаружил, что когда изображение было больше 1024x1024 (в любом направлении), оно бомбило. (у меня экран 1920х1080). Когда я уменьшил изображение до 1024x1024, все заработало нормально. Однако все еще пытаюсь выяснить, что ломается в Pyglet. (переход на версию 1.1.4 не дал результатов).   -  person John C    schedule 10.12.2016


Ответы (2)


Код, включая image.blit, у меня работает нормально. Я использую python 2.7.3, pyglet 1.1.4. С кодом все в порядке. Вы можете пока попробовать другие версии python и pyglet (пока у pyglet не будет новой стабильной версии)

person Rolf Schorpion    schedule 07.09.2013

Это не «исправление», но может, по крайней мере, определить, можно ли это исправить или нет (у меня не было). (Из группы рассылки Pyglet.)

Вы можете проверить, не поддерживает ли система даже поддерживает текстуры больше 1024, запустив этот код (Python 3+):

from ctypes import c_long
from pyglet.gl import glGetIntegerv, GL_MAX_TEXTURE_SIZE

i = c_long()
glGetIntegerv(GL_MAX_TEXTURE_SIZE, i)
print (i)  # output: c_long(1024) (or higher)

Это максимальный размер текстуры, поддерживаемый вашей системой. Если это 1024, то любые большие изображения вызовут исключение. (И единственное исправление - получить лучшую систему).

person John C    schedule 13.01.2017