質問
私はPygletに初めてです。ピクセルをそれぞれで黒から白に交換したい on_draw
反復。したがって、1000回の反復後、ウィンドウに正確に1000個の白いピクセルがあるはずです。しかし、私は1000のドロー操作を呼び出すことを避けたいです on_draw
そのために。それで、画像を作成し、画像にRGB Putpixelを実行し、画像を画面に張りたいと思います。どうやってやるの? Pygletドキュメント、例、ソースコードは、これについてあまり役に立ちません。
解決
誰もこれに対して本当に良い答えを与えなかったので。
ここに置きます:
import pyglet
from random import randint
width, height = 500, 500
window = pyglet.window.Window(width=width, height=height)
image = pyglet.image.SolidColorImagePattern((255,255,255,255)).create_image(width, height)
data = image.get_image_data().get_data('RGB', width*3)
new_image = b''
for i in range(0, len(data), 3):
pixel = bytes([randint(0,255)]) + bytes([randint(0,255)]) + bytes([randint(0,255)])
new_image += pixel
image.set_data('RGB', width*3, new_image)
@window.event
def on_draw():
window.clear()
image.blit(0, 0)
pyglet.app.run()
本質的に、これがすることは、それ自体が窓に描画できる白い画像を作成することです。しかし、私たちがやりたいと思うように見ています putpixel
, 、デモとして白い画像のすべてのピクセルを変更しました。
次の点でジャンクションで使用できます
これは、画像操作をさらに操作するために使用できます。
他のヒント
これはあなたを助けるには遅すぎますが、これを行う方法があります。たとえば、blit_intoは、ロードされた画像を変更します。
import pyglet
window = pyglet.window.Window(600, 600)
background = pyglet.resource.image('my600x600blackbackground.bmp')
pix = pyglet.resource.image('singlewhitepixel.bmp').get_image_data()
def update(dt):
background.blit_into(pix, x, y, 0) #specify x and y however you want
@window.event
def on_draw():
window.clear()
background.blit(0,0)
pyglet.clock.schedule(update, 1.0/30) #30 frames per second
pyglet.app.run()
答えが得られなかったので、Pygletでこれを行う簡単な方法はないようです。それで、私はPygletの使用をあきらめました。
所属していません StackOverflow