He buscado mucho acerca de tomar una captura de pantalla de mi objeto OpenGL en Android y proponer la solución this. Funcionó muy bien, pero en mi caso tengo vista de cámara y vista abierta (con fondo transparente) en la parte superior de la vista de la cámara. Entonces, lo que quiero hacer es obtener una captura de pantalla opengl con fondo transparente en lugar de negro. Como dije, he intentado con el enlace de arriba y funcionó, pero estoy atascado con el fondo negro. Es un poco complicado averiguar cómo deshacerse del fondo negro en este caso particular. Espero que alguien pueda ayudarme y lo más posible si es posible (también creo que la solución es fácil, me falta algo simple). Gracias.Android OpenGL Captura de pantalla
Respuesta
Utilicé el siguiente método y funcionó como un campeón.
public static Bitmap SavePixels(int x, int y, int w, int h, GL10 gl)
{
int b[]=new int[w*(y+h)];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for(int i=0, k=0; i<h; i++, k++)
{//remember, that OpenGL bitmap is incompatible with Android bitmap
//and so, some correction need.
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0x00ff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-k-1)*w+j]=pix1;
}
}
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
return sb;
}
sólo tiene que llamar
YourClass.SavePixels(0,0,width,height,gl);
espero que esto funcionará para usted ...
Gracias, Midhun
La solución que mencionó está utilizando un Bitmap.Config.RGB_565
que no admite canales alfa.
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
lugar debe usar Bitmap.Config.ARGB_8888
o Bitmap.Config.ARGB_4444
.
Gracias. Intenté usar ARGB_4444 y obtuve una imagen con colores desordenados (creo que algo cambió y tiene una apariencia divertida de muchos colores diferentes). Creo que necesito cambiar el algoritmo de conversión de píxeles a rgb. Cuando probé 8888 recibí un error sobre el tamaño del mapa de bits. ¿Cómo debería cambiar el tamaño? –
ARGB_4444 'arruina' sus colores porque usa la mitad de la cantidad de espacio para guardar la misma información. Mientras que RGB_8888 usa 8 bits para cada canal (R, G, B y el canal alfa) RGB_4444 usa 4 bits para cada canal, lo que trunca la información y le da una muy mala calidad percibida. Los efectos más destacados son bandas y distorsión del color. Algunas técnicas de tramado intentan resolverlo, pero no sé si están disponibles de forma nativa en Android. Si 8888 le da un error de memoria, intente disminuir el tamaño del mapa de bits. Tal vez su dispositivo no tenga suficiente memoria RAM disponible. – RedOrav
Incluso al usar Bitmap.Config.ARGB_8888, da un fondo negro. – pallavi
- 1. Toma de captura de pantalla de Android OpenGL
- 2. Captura de pantalla en android
- 3. captura de pantalla usando OpenGL y/o X11
- 4. Cómo tomar una captura de pantalla en OpenGL
- 5. Captura de pantalla de la pantalla actual
- 6. Android tome la captura de pantalla programáticamente
- 7. La captura de pantalla COCOS 2D es negra en Android
- 8. Pantalla de captura
- 9. Captura de pantalla de la segunda pantalla
- 10. Captura de pantalla de la toma
- 11. Captura de pantalla de Android en el dispositivo rooteado
- 12. prevenir la captura de pantalla en las aplicaciones de Android
- 13. Captura de pantalla de Android a través del código
- 14. Android: pantalla de captura del teléfono como una película
- 15. Captura de pantalla programática en dispositivo móvil
- 16. HTML5 video captura de pantalla
- 17. Captura de pantalla en Haskell?
- 18. ¿Cómo tomar la captura de pantalla programáticamente?
- 19. Pantalla de video con OpenGL
- 20. Captura de pantalla del contenido de OpenGL ES para la aplicación Paint
- 21. Tomar una captura de pantalla mediante programación combinando los elementos de OpenGL y UIKit
- 22. Qt MDI aplicación con OpenGL: cómo obtener una captura de pantalla válida?
- 23. Superposición de pantalla para la captura de pantalla
- 24. minimizar pantalla completa OpenGL Window
- 25. android juego opengl
- 26. captura de pantalla de escritorio oculto
- 27. Herramienta de captura de pantalla para BlackBerry?
- 28. Captura de impresiones de pantalla en Java
- 29. Captura de pantalla del iPhone para ver
- 30. Convertir URL en captura de pantalla (script)
¡Parece prometedor! Lo siento estado súper ocupado ... lo probaré pronto. –
¡Ok funcionó! ¡gracias! –
no funcionó para mí :( – Noman