Зареждане на изображение с помощта на 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 (в двете посоки), тя бомбардира. (Моят екран е 1920x1080). Когато смалих снимка до 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