Tôi đang cố chụp ảnh màn hình Android OpenGL.Chụp ảnh màn hình của Android OpenGL
Mã tôi thấy như sau:
nt size = width * height;
ByteBuffer buf = ByteBuffer.allocateDirect(size * 4);
buf.order(ByteOrder.nativeOrder());
glContext.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, buf);
int data[] = new int[size];
buf.asIntBuffer().get(data);
buf = null;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
bitmap.setPixels(data, size-width, -width, 0, 0, width, height);
data = null;
short sdata[] = new short[size];
ShortBuffer sbuf = ShortBuffer.wrap(sdata);
bitmap.copyPixelsToBuffer(sbuf);
for (int i = 0; i < size; ++i) {
//BGR-565 to RGB-565
short v = sdata[i];
sdata[i] = (short) (((v&0x1f) << 11) | (v&0x7e0) | ((v&0xf800) >> 11));
}
sbuf.rewind();
bitmap.copyPixelsFromBuffer(sbuf);
try {
FileOutputStream fos = new FileOutputStream("/sdcard/screeshot.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (Exception e) {
// handle
}
Tôi cũng đã cố gắng một mã từ trang web đó link text
Trong mỗi trường hợp kết quả là một tập tin png đó là hoàn toàn đen. Tôi thấy có một số vấn đề với phương pháp glReadPixels
nhưng tôi không biết cách bỏ qua nó.
tôi nhận được màu sắc erroneal với điều này giải pháp, ví dụ, màu vàng được sơn màu xanh ... ¿? làm thế nào để giải quyết nó xin vui lòng? – NullPointerException
@ Gordon Làm thế nào để bạn khởi tạo gl? – XXX