Ich nehme an, dass Sie eine 16-Bit-RGB-Anzeige, nicht eine Anzeige, die jede Farbe (rot, grün und blau) als 16 Bit bedeutet. Ich nehme auch an, Sie wissen, wie Ihre r, g, und b-Werte in diesem 16-Bit-Raum codiert sind, denn es gibt two possibilities.
Wenn Sie also wissen, wie Sie Ihren Farbraum aufteilen, können Sie jetzt eine Reihe von Byte-Arrays verwenden, um Ihre Daten darzustellen. Was zu einer schwierigen Entscheidung wird, ist, ob man mit Byte-Arrays gehen soll, weil man eine Reihe von Algorithmen hat, die bereits die Arbeit an diesen Arrays erledigen können, aber ein paar zusätzliche Bits pro Byte kosten, die man nicht ausgeben kann oder muss halte alles in diesem 16-Bit-Format und arbeite dann an den entsprechenden Bits jedes 16-Bit-Pixels. Nur du kannst diese Frage wirklich beantworten; Wenn Sie den Speicher haben, würde ich mich für den Byte-Array-Ansatz entscheiden, weil es wahrscheinlich schneller ist und Sie ein wenig extra Präzision bekommen, um die Bilder am Ende glatter zu machen.
Angesichts dieser Annahmen ist die Frage wirklich rechenschaftspflichtig, wie viel Zeit Sie auf Ihrem Gerät haben. Wenn Sie ein sehr schnelles Gerät haben, können Sie eine Lanczos resampling implementieren. Wenn Sie ein weniger schnelles Gerät haben, funktioniert bicubic interpolation auch sehr gut. Wenn Sie ein noch langsameres Gerät haben, ist bilinear interpolation Ihr Freund.
Wenn Sie wirklich keine Geschwindigkeit haben, würde ich die Reskalierung in einer externen Anwendung wie Photoshop durchführen und eine Reihe von Bitmaps speichern, die Sie laden, wie Sie sie brauchen.
Wenn es 16 Bit Farbe ist, warum ist jedes Pixel 32 Bits? –
Normalerweise sind 32-Bit-Pixel entweder 24-Bit-Farbe + 8 Bit Alpha oder 24 Bit Farbe +8 Bit verschwendeter Speicherplatz. – tylerl
Es sieht so aus, als wäre das Display 16-farbig, nicht 16-bit? –