Um das verarbeitete Bild mit OpenGL ES zu speichern, habe ich die Codes wie folgt erstellt. Und es funktioniert gut.Wie erhalten 24 Bit Farbinformationen von glReadPixels() auf Android?
ByteBuffer bb = ByteBuffer.allocate(mWidth * mHeight * 4);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGBA, GL_UNSIGNED_BYTE, bb);
try {
TJCompressor tjCompressor = new TJCompressor(bb.array(), 0, 0, mWidth, 0, mHeight, TJ.PF_RGB);
tjCompressor.setJPEGQuality(100);
tjCompressor.setSubsamp(TJ.SAMP_444);
return tjCompressor.compress(0);
} catch (Exception e) {
e.printStackTrace();
}
Danach werden 24-Bit-Farbinformationen ohne Alphakanal für das Speichern von Speicher und Verarbeitungszeit zu erhalten, änderte ich die Zeile # 1 und # 2 der Codes wie folgt.
ByteBuffer bb = ByteBuffer.allocate(mWidth * mHeight * 3);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGB, GL_UNSIGNED_BYTE, bb);
Und dann zusätzlich entfernte ich EGL_ALPHA_SIZE
bei mGL (GL10-Instanz) EGLConfig s '. Und ich übergab GLES20.GL_RGB
als internen Formatparameter, wenn GLUtils.texImage2D() -Methode aufgerufen wird.
Das Ergebnis zeigt jedoch an, dass etwas nicht stimmt. Das Ergebnisbild hat nur eine schwarze Farbe, und als ich die Daten von bb
Puffer nach glReadPixels()
Methode Aufruf überprüft habe, fand ich alle Daten ist Null. Ich brauche Hilfe. Hilfe, PLZ.
Danke für Ihre Antwort im Detail. Ich fand, dass es normalerweise auf einigen anderen Geräten funktioniert. –