2017-02-17 1 views
1

Ich möchte ein PNG-Bild laden und die Farbe einiger Pixel (im 32-Bit-RGBA-Format) erhalten. Ich habe viel gesucht, aber keine gute Arbeitslösung dafür gefunden.Wie liest man Pixelfarben mit SDL2?

Was ich gefunden habe, ist Pixel Manipulation mit SDL_LockTexture. Aber wollen Sie das Bild nicht ändern, lesen Sie nur einige seiner Pixel.

+0

Irgendein besonderer Grund warum SDL? –

Antwort

1

Da Sie dies nicht angegeben haben, nehme ich an, dass Sie SDL_image verwenden, um Bilder zu laden. Daher ist IMG_Load ein guter Kandidat, von dem zu diskutieren ist.
Wie Sie aus dem Link sehen können, gibt es eine SDL_Surface (die Sie wahrscheinlich in eine Textur konvertieren möchten, aber Sie müssen das nicht tun, um seine Pixel zu lesen).
Mit einem solchen Objekt, das Sie verwenden können:

* SDL_LockSurface:

Verwenden Sie diese Funktion, um eine Fläche zur Einrichtung für die Pixel direkt zugreifen.

* SDL_UnlockSurface:

Verwenden dieser Funktion, eine Oberfläche zu lösen, nachdem die Pixel direkt Zugriff.

Die Dokumentation auch fest, dass:

Zwischen Anrufe SDL_LockSurface()/SDL_UnlockSurface(), können Sie schreiben und lesen von Aufputz-> Pixel, gespeichert, um die Pixel-Format in Aufputz-> Format.

Pixel und Format sind beide zu Ihrer Verfügung. Es sieht nach einem guten Kandidaten aus, um das zu tun, was Sie verlangen.


Aber ...

Ich möchte ein PNG-Bild laden, [...]

Beachten Sie, dass IMG_LoadPNG_RW gibt ein SDL_Surface sowie IMG_Load.