質問

私は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の使用をあきらめました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top